以京东为例简单的写下抓取动态数据

  • Post author:
  • Post category:其他


不管是使用beautifulsoup还是scrapy的过程中,都会发现明明网页的源代码里有的数据,但是就是抓取不出来,原因呢就是因为这个数据是由js生成的动态数据。

要抓取这个动态数据一般来说是有2种方法。一种是直接找到js的数据源,那样就会得到一个xml或者是json的数据,后续处理一下就可以了。另外一种就是浏览器直接执行完js,然后再去抓取得到的数据。

比较下2种方法的优缺点。速度上:第一种就是快,相当于直接去获取到了数据。而第2种因为要等整个浏览器执行完js之后再去获取,速度简直是天差地别。便利性:第一种就不够方便了,首先需要花费精力在开发者工具中查找数据源,这本身可能就比较麻烦。大规模爬取的时候数据源没有规律,不能从同一个数据源读取数据,所以大规模爬取的时候就希望一种通用的方法。这时候就是第2种上场的时候了。不需要寻找什么,只要将执行完js之后的数据爬取出来就ok了,通用性强。

我们以scrapy作为框架,来看看京东的数据抓取。

from scrapy_redis.spiders import RedisSpider
from JDspider.items import JDspiderLoader
from splinter import Browser
from scrapy import log



class Myspider(RedisSpider):
    '''spider that reads urls from redis queue (myspider:start_urls).''&#



版权声明:本文为howtogetout原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。