动态网页抓取(【每日一题】1.一种基于scrapy和puppeteer的动态数据抓取方法)
优采云 发布时间: 2021-12-09 01:10动态网页抓取(【每日一题】1.一种基于scrapy和puppeteer的动态数据抓取方法)
技术特点:
1.一种基于scrapy和puppeteer的动态数据捕获方法,其特征在于,该动态数据捕获方法包括以下步骤: 步骤1):分析网络请求,分析pending采集数据哪些是静态数据,哪些是动态数据;将静态数据放入scrapy采集; step 2):分析动态网络请求,判断api接口能否稳定返回数据;如果是,将动态数据放入scrapy 采集; 如果没有,将动态数据放入puppeteer采集;步骤3):安装scrapy
-
redis,启用scrapy支持分布式采集;step 4):设置爬虫的初始url,scrapy会使用get方法请求url,请求成功后会自动调用默认回调函数parse返回请求结果;当请求完成后,scrapy将请求返回的响应作为参数传递给回调函数;步骤5):预先定义scrapy.item对象,将需要的目标数据定义为item属性;分析回调函数中的响应内容;step 6):处理管道中的item对象;step 7):puppeteer监控redis队列,当队列中有数据时,取出保存的URL等一些关键信息,启动chrome,打开Goal网站url;步骤 < @8):等待页面加载,获取页面html,通过xpath提取目标数据;步骤9):直接插入目标数据,或者通过id持久化保存更新到mongodb。2.根据权利要求1所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述步骤1)具体为: 分析网络请求:使用chrome开发者工具查看目标网页的web请求,分析要成为采集的数据哪些是静态数据,哪些是动态数据;静态数据为:doc类型网络请求返回的html中可以获取的数据;动态数据不在一个doc类型的网络请求中返回,但是需要额外调用ajax发送的请求返回的数据;静态数据放在scrapy采集中。等待页面加载,获取页面html,通过xpath提取目标数据;步骤9):直接插入目标数据,或者通过id持久化保存更新到mongodb。2.根据权利要求1所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述步骤1)具体为: 分析网络请求:使用chrome开发者工具查看目标网页的web请求,分析要成为采集的数据哪些是静态数据,哪些是动态数据;静态数据为:doc类型网络请求返回的html中可以获取的数据;动态数据不在一个doc类型的网络请求中返回,但是需要额外调用ajax发送的请求返回的数据;静态数据放在scrapy采集中。等待页面加载,获取页面html,通过xpath提取目标数据;步骤9):直接插入目标数据,或者通过id持久化保存更新到mongodb。2.根据权利要求1所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述步骤1)具体为: 分析网络请求:使用chrome开发者工具查看目标网页的web请求,分析要成为采集的数据哪些是静态数据,哪些是动态数据;静态数据为:doc类型网络请求返回的html中可以获取的数据;动态数据不在一个doc类型的网络请求中返回,但是需要额外调用ajax发送的请求返回的数据;静态数据放在scrapy采集中。
3.根据权利要求1所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述步骤2)具体为:分析动态网络请求:使用postman工具尝试手动多次发送获取的ajax请求再次从步骤1开始,根据相同的元素,检查返回的结果是否能够得到目标数据,并且每次都检查是否能够得到相同的返回结果,从而判断api接口是否能够稳定返回数据;如果每次都能得到想要的目标数据,说明接口可以稳定返回数据,把这部分动态数据放到scrapy采集中,如果不能稳定返回,就把这部分动态数据放到傀儡师采集。4. 3.根据权利要求2所述的基于scrapy和puppeteer的动态数据捕获方法,其特征在于,所述步骤2)中:相同元素为url、请求头、cookies、参数。5.根据权利要求1所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述步骤4)包括:使用start_requests方法对初始URL请求重写scrapy,读取所有初始URL从数据库和redis,手动定义请求头、cookies、参数,设置自定义回调函数。6.根据权利要求1所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述步骤5)包括:创建item对象,并为对应的属性中分配特定的目标数据,最后返回封装的 item 对象。7.根据权利要求6所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述步骤5)包括:如果返回的数据为html类型,则使用xpath提取数据。8.根据权利要求6所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于:
<p>描述的步骤5)包括:如果返回json类型数据,则使用json_dumps提取数据。9.根据权利要求1所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述步骤6)包括: 将已经采集存储在mongodb中的目标数据持久化;没有采集接收到的数据,比如页面的url和data id的关键字段被打包放入redis队列。10.根据权利要求1所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述步骤