一种解决JS加密问题的爬虫方法技术

技术编号:26376616 阅读:22 留言:0更新日期:2020-11-19 23:45
本发明专利技术公开了一种解决JS加密问题的爬虫方法,包括以下步骤:S1:创建scrapy项目,并设定允许爬取的域名范围、请求头信息和初始URL;S2:通过调用selenium框架的webdriver工具获取cookie;S3:根据初始URL和cookie,调用内部start_requests()爬取列表页;S4:解析列表页并管理列表页的URL,完成页面爬取。本发明专利技术使用的是聚焦网络爬虫。本发明专利技术中先将要爬取的内容通过搜索引擎筛选出来,然后爬取筛选出来的页面内容,可爬取JS加密的页面,同时可获取网页重定向之后的链接。

【技术实现步骤摘要】
一种解决JS加密问题的爬虫方法
本专利技术属于网络爬虫
,具体涉及一种解决JS加密问题的爬虫方法。
技术介绍
在大数据和互联网+时代,网络上的信息量飞速增长,传统的通过搜索引擎获取信息的方式已经有了局限性,越来越满足不了用户对信息获取的高效、快速和准确的要求。在自动化和智能化得到快速发展的今天,利用自动化方法获取信息将是一个重要的方向。在自动化获取信息的众多方法里,网络爬虫是一大利器,它基于搜索引擎,能够自动地解析出网页结构并快速定位到用户的目标数据进行爬取并储存,高效又准确。网络爬虫是一个在网络上抓取页面、分析页面和抽取链接的程序。它自动遍历Web的超文本结构,从初始的超链接开始,递归地检索可从该文档访问的所有文档。网络爬虫的工作原理较为简单,一般的Web爬虫的内部维护了一个容器用于存储URL链接,从根页面开始,根页面的URL首先被爬虫添加到容器中,进入链接读取根页面的内容,解析出根页面中后续需要访问的链接将其加入到容器中,循环执行上述过程直至URL容器为空则停止运行。除了通用爬虫,有学者还提出了一种聚焦网络爬虫,即在一般的Web爬虫的基础上,用户需要通过设置主题来过滤解析后的页面内容,舍弃无用信息并将目标信息存入数据库,以及将目标URL加入到URL容器中。但是现有的网虫技术无法爬取JS加密的页面,无法获取网页重定向之后的链接。
技术实现思路
本专利技术的目的是为了解决基于scrapy框架的爬虫无法爬取JS加密和重定向页面的问题,提出了一种解决JS加密问题的爬虫方法。>本专利技术的技术方案是:一种解决JS加密问题的爬虫方法包括以下步骤:S1:创建scrapy项目,并设定允许爬取的域名范围、请求头信息和初始URL;S2:通过调用selenium框架的webdriver工具获取cookie;S3:根据初始URL和cookie,调用内部start_requests()爬取列表页;S4:解析列表页并管理列表页的URL,完成页面爬取。本专利技术的有益效果是:本专利技术使用的是聚焦网络爬虫。本专利技术中先将要爬取的内容通过搜索引擎筛选出来,然后爬取筛选出来的页面内容,可爬取JS加密的页面,同时可获取网页重定向之后的链接。进一步地,步骤S1中,scrapy项目包括引擎、调度器、下载器、爬虫、项目管道、下载器中间件和爬虫中间件;引擎用于控制其他组件的动作流程;调度器用于暂存引擎请求,当引擎需要URL时,调度器返回给引擎;下载器用于获取到页面数据后将其递交给引擎;爬虫内定义爬取的逻辑和网页的定义规则,用于解析响应并生成提取结果和新的请求;项目管道用于处理Item;下载器中间件用于处理下载器传递给引擎的Response;爬虫中间件用于处理爬虫的输入和输出;域名范围用于限制爬虫的可爬取范围;如果获取的链接不在这个域名下就自动过滤不在爬取;请求头信息包括向网络服务器发送请求时传递的一组属性信息和配置信息;本爬虫中只设置了User-Agent,这个信息是一个特殊的字符串头,可以使服务器识别客户使用的操作系统和版本以及浏览器和版本等信息。加上此信息可以伪装成浏览器,如果不加会可能被识别为爬虫。上述进一步方案的有益效果是:在本专利技术中,scrapy项目是一个基于Twisted的异步处理框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。进一步地,步骤S2包括以下子步骤:S21:调用selenium框架的webdriver工具声明浏览器对象并添加驱动;S22:利用驱动运行浏览器,并利用浏览器对象访问初始URL;S23:从浏览器中获取cookie并存储在字典中。上述进一步方案的有益效果是:在本专利技术中,Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的操作,如点击和下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。对于一些JavaScript动态渲染的页面来说,这种抓取方式非常有效。进一步地,步骤S23中,从浏览器获取到的cookie形式为“键:值”。进一步地,步骤S3包括以下子步骤:S31:调用内部start_requests()读取初始URL;S32:根据cookie进行验证;S33:根据读取后的URL和验证后的cookie,生成请求并传递给回调函数处理响应,完后爬取列表页。进一步地,步骤S32中,根据cookie进行验证的方法为:爬虫请求中携带的cookie的值与浏览器缓存的cookie值进行比较,若完全相同,则可以从网页获取响应,否则结束爬取。上述进一步方案的有益效果是:在本专利技术中,从浏览器获取的是“键:值”这样的形式,需要将字段名称和字段值储存在字典中。字典这种数据结构就是用于存储键值对的,可以通过冒号前面的键获取后面的值,进行验证。进一步地,步骤S4中,解析列表页包括以下子步骤:A41:解析获得的响应,得到解析数据;A42:判断解析响应过程中URL是否被重定向和加密,若是则进入步骤A43,否则进入步骤A45;A43:通过正则匹配获取列表页中详细页的真实链接;A44:爬取并解析详细页的真实链接,获得解析数据;A45:通过项目管道将解析数据输出并存储到数据库中。进一步地,步骤S4中,管理列表页的URL包括以下子步骤:B41:将列表页中各条目的URL加入到待爬取队列中;B42:拿出待爬取队列中的各条目URL并进入详细页,获取详细信息;B43:判断各条目URL队列是否为空,若是则获取详细信息完毕,结束页面爬取,否则返回步骤S3。附图说明图1为爬虫方法的流程图;图2为Scrapy框架的结构图。具体实施方式下面结合附图对本专利技术的实施例作进一步的说明。在描述本专利技术的具体实施例之前,为使本专利技术的方案更加清楚完整,首先对本专利技术中出现的缩略语和关键术语定义进行说明:JS:JavaScript,一种脚本语言;URL:统一资源标识符。如图1所示,本专利技术提供了一种解决JS加密问题的爬虫方法,包括以下步骤:S1:创建scrapy项目,并设定允许爬取的域名范围、请求头信息和初始URL;S2:通过调用selenium框架的webdriver工具获取cookie;S3:根据初始URL和cookie,调用内部start_requests()爬取列表页;S4:解析列表页并管理列表页的URL,完成页面爬取。在本专利技术实施例中,如图1所示,步骤S1中,scrapy项目包括引擎、调度器、下载器、爬虫、项目管道、下载器中间件和爬虫中间件;引擎用于控制其他组件的动作流程;调度器用于暂存引擎请求,当引擎需要URL时,调度器返回给引擎;下载器用于获取到页面数据后将其递交给引擎;爬虫内本文档来自技高网...

【技术保护点】
1.一种解决JS加密问题的爬虫方法,其特征在于,包括以下步骤:/nS1:创建scrapy项目,并设定允许爬取的域名范围、请求头信息和初始URL;/nS2:通过调用selenium框架的webdriver工具获取cookie;/nS3:根据初始URL和cookie,调用内部start_requests()爬取列表页;/nS4:解析列表页并管理列表页的URL,完成页面爬取。/n

【技术特征摘要】
1.一种解决JS加密问题的爬虫方法,其特征在于,包括以下步骤:
S1:创建scrapy项目,并设定允许爬取的域名范围、请求头信息和初始URL;
S2:通过调用selenium框架的webdriver工具获取cookie;
S3:根据初始URL和cookie,调用内部start_requests()爬取列表页;
S4:解析列表页并管理列表页的URL,完成页面爬取。


2.根据权利要求1所述的解决JS加密问题的爬虫方法,其特征在于,所述步骤S1中,scrapy项目包括引擎、调度器、下载器、爬虫、项目管道、下载器中间件和爬虫中间件;
所述引擎用于控制其他组件的动作流程;
所述调度器用于暂存引擎请求,当引擎需要URL时,调度器返回给引擎;
所述下载器用于获取到页面数据后将其递交给引擎;
所述爬虫内定义爬取的逻辑和网页的定义规则,用于解析响应并生成提取结果和新的请求;
所述项目管道用于处理Item;
所述下载器中间件用于处理下载器传递给引擎的Response;
所述爬虫中间件用于处理爬虫的输入和输出;
所述域名范围用于限制爬虫的可爬取范围;
所述请求头信息包括向网络服务器发送请求时传递的一组属性信息和配置信息。


3.根据权利要求1所述的解决JS加密问题的爬虫方法,其特征在于,所述步骤S2包括以下子步骤:
S21:调用selenium框架的webdriver工具声明浏览器对象并添加驱动;
S22:利用驱动运行浏览器,并利用浏览器对象访问初始URL;
S23:从浏览器中获取cookie并存储在字典中。


4.根据权利要求3所述的解决JS加密问题...

【专利技术属性】
技术研发人员:孙健赵书武胡健龙王彩洪
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1