预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN113742551A(43)申请公布日2021.12.03(21)申请号202111045471.0G06F16/958(2019.01)(22)申请日2021.09.07(71)申请人贵州电子商务云运营有限责任公司地址550000贵州省贵阳市贵阳国家高新技术产业开发区长岭南路33号天一国际广场第11-12栋(11)1单元11层1-3号房(72)发明人谭文婷(74)专利代理机构成都市鼎宏恒业知识产权代理事务所(特殊普通合伙)51248代理人吴锦德(51)Int.Cl.G06F16/951(2019.01)G06F16/955(2019.01)权利要求书2页说明书4页附图1页(54)发明名称一种基于scrapy和puppeteer的动态数据抓取方法(57)摘要本发明涉及一种基于scrapy和puppeteer的动态数据抓取方法,本发明所述的动态数据抓取方法包括以下步骤:步骤1):分析网络请求;步骤2):分析动态网络请求;步骤3):安装scrapy‑redis;步骤4):设置爬虫的初始url;步骤5):提前定义scrapy.Item对象;步骤6):在pipeline中处理Item对象;步骤7):puppeteer监听redis队列;步骤8):等待页面加载完成,获取页面html,通过xpath提取目标数据;步骤9):将目标数据直接插入、或通过id更新到mongodb中持久化保存。本发明结合了scrapy和puppeteer两者的优势,将数据进行分类,实现快速高效的采集,puppeteer采集异步加载的、API加密的、复杂的数据,本发明通过redis进行通信,易于扩展。CN113742551ACN113742551A权利要求书1/2页1.一种基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述的动态数据抓取方法包括以下步骤:步骤1):分析网络请求,分析待采集数据哪些是静态数据,哪些是动态数据;静态数据放入scrapy中采集;步骤2):分析动态网络请求,判断API接口是否能否稳定的返回数据;如是,将该动态数据放到scrapy中采集;如否,则将该动态数据放到puppeteer中采集;步骤3):安装scrapy‑redis,使scrapy支持分布式采集;步骤4):设置爬虫的初始url,scrapy将用GET方法来请求该url,请求成功以后自动调用默认的回调函数parse返回请求结果;当请求完成以后,scrapy将请求返回的结果response作为参数传递给回调函数;步骤5):提前定义scrapy.Item对象,将需要的目标数据定义为Item的属性;在回调函数中分析response内容;步骤6):在pipeline中处理Item对象;步骤7):puppeteer监听redis队列,当队列中有数据时,取出保存的url和其他的一些关键信息,启动chromium,打开目标网站url;步骤8):等待页面加载完成,获取页面html,通过xpath提取目标数据;步骤9):将目标数据直接插入、或通过id更新到mongodb中持久化保存。2.根据权利要求1所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述的步骤1)具体为:分析网络请求:使用chrome的开发者工具查看目标网页的网络请求,分析待采集数据哪些是静态数据,哪些是动态数据;静态数据为:在Doc类型的网络请求中返回的html里能获取到的数据;动态数据为没有在Doc类型的网络请求中返回,而是需要额外调用ajax发送的请求返回的数据;静态数据放入scrapy中采集。3.根据权利要求1所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述的步骤2)具体为:分析动态网络请求:使用postman工具尝试手动多次发送从步骤1获取到的ajax请求,根据相同的要素,查看返回结果是否能得目标数据,查看是否每次都能得到相同的返回结果,从而判断API接口是否能否稳定的返回数据;如果每次都能得到想要的目标数据,表示接口能够稳定返回数据,则将这部分动态数据放到scrapy中采集,如果不能稳定返回,则将这部分动态数据放到puppeteer中采集。4.根据权利要求2所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述的步骤2)中:所述的相同的要素为url、请求头、cookies、参数。5.根据权利要求1所述的基于scrapy和puppeteer的动态数据抓取方法,其特征在于,所述的步骤4)包括:初始的url请求使用重写scrapy的start_requests方法,从数据库、redis中读取所有的初始url,手动定义请求头、cookies、参数,并设置自定义