CN111552854A - 一种网页数据抓取方法、装置、存储介质和设备 - Google Patents
一种网页数据抓取方法、装置、存储介质和设备 Download PDFInfo
- Publication number
- CN111552854A CN111552854A CN202010334525.4A CN202010334525A CN111552854A CN 111552854 A CN111552854 A CN 111552854A CN 202010334525 A CN202010334525 A CN 202010334525A CN 111552854 A CN111552854 A CN 111552854A
- Authority
- CN
- China
- Prior art keywords
- authentication information
- data
- webpage
- authorization authentication
- headless browser
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例提供一种网页数据抓取方法、装置、存储介质和设备,所述方法包括:在通过无头浏览器成功登录目标网页之后,若所述无头浏览器监听到所述目标网页的AJAX请求,通过所述无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中;通过数据抓取脚本从缓存中读取授权认证信息,并将读取到的授权认证信息添加到用于抓取网页数据的访问请求中;通过所述数据抓取脚本,基于含有授权认证信息的访问请求,抓取服务器在基于授权认证信息通过认证之后返回的网页数据。如此,能够实现有效地抓取网页数据。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种网页数据抓取方法、装置、存储介质和设备。
背景技术
随着互联网信息技术的迅速发展,越来越多的网站随之而生。基于从网站抓取的数据可进行相应的进一步处理。例如,通过抓取网站的相关数据进行分析处理,能够提供诸如数据分析、智能推荐等数据服务。
目前,在大型的网页应用簇中,经常会使用单点登录(Single Sign On,SSO)作为用户认证手段,这种认证方式可以让用户在多个应用系统中,只需要使用同一个账号登录一次,就可以访问其他相互信任的应用系统。但是,在这种复杂的登录流程下,目前的网络爬虫如Scrapy(抓取)框架,在不同域名间redirect(重定向)能力十分羸弱,不方便处理不同域名下cookie(储存在用户本地终端上的数据)共享问题,当遇到一些需要用户认证授权的内容或者触发网站的反机器人检测时,都会使得网络爬虫中断抓取网页数据。
因此,如何有效地抓取网页数据,是目前亟待解决的问题。
发明内容
有鉴于此,本申请实施例提供一种网页数据抓取方法、装置、存储介质和设备,能够有效地抓取网页数据。
本申请实施例主要提供如下技术方案:
第一方面,本申请实施例提供了一种网页数据抓取方法,包括:在通过无头浏览器成功登录目标网页之后,若所述无头浏览器监听到所述目标网页的AJAX请求,通过所述无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中;通过数据抓取脚本从缓存中读取授权认证信息,并将读取到的授权认证信息添加到用于抓取网页数据的访问请求中;通过所述数据抓取脚本,基于含有授权认证信息的访问请求,抓取服务器在基于授权认证信息通过认证之后返回的网页数据。
在一种示例性实施例中,所述目标网页的URL(Uniform Resource Locator,统一资源定位符)与含有授权认证信息的访问请求中的URL是不相同的,含有授权认证信息的访问请求中的URL与监听到的AJAX请求中的URL是相同的。
在一种示例性实施例中,所述在通过无头浏览器成功登录目标网页之后,若所述无头浏览器监听到所述目标网页的AJAX请求,通过所述无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中,包括:通过所述无头浏览器根据预设的目标网页的URL,以预设账户信息登录所述目标网页,其中,预设账户信息为用于标识登录目标网页的用户的身份标识;在所述无头浏览器成功登录所述目标网页之后,通过所述无头浏览器对所述目标网页的AJAX请求进行监听;若无头浏览器监听到目标网页的AJAX请求,通过所述无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中。
在一种示例性实施例中,所述通过所述无头浏览器根据预设的目标网页的URL,以预设账户信息登录所述目标网页,包括:启动所述无头浏览器;在所述无头浏览器上启动浏览器窗口;根据预设的目标网页的URL,等待所述浏览器窗口加载所述目标网页;在所述浏览器窗口加载出所述目标网页中的用于输入账户信息的元素之后,输入预设账户信息,以登录目标网页。
在一种示例性实施例中,所述通过所述数据抓取脚本,基于含有授权认证信息的访问请求,抓取服务器在基于授权认证信息通过认证之后返回的网页数据,包括:通过所述数据抓取脚本将含有授权认证信息的访问请求发送给服务器,以使服务器基于授权认证信息进行认证;接收所述服务器在基于授权认证信息通过认证之后返回的网页数据;从所述服务器在基于授权认证信息通过认证之后返回的网页数据中,抓取满足预设抓取条件的网页数据。
在一种示例性实施例中,所述通过所述无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中,包括:对监听到的AJAX请求进行解析,得到请求头信息;将所述请求头信息作为所述授权认证信息存入缓存中。
在一种示例性实施例中,所述无头浏览器由Puppeteer框架实现,所述缓存由远程字典服务Redis数据库实现,所述数据抓取脚本由抓取Scrapy框架实现。
第二方面,本申请实施例提供了一种计算机可读存储介质,包括:存储的程序,其中,在所述程序运行时控制所述存储介质所在计算机设备执行上述一个或多个实施例中的网页数据抓取方法的步骤。
第三方面,本申请实施例提供了一种计算机设备,包括:至少一个处理器;以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述一个或多个实施例中的网页数据抓取方法的步骤。
第四方面,本申请实施例提供了一种网页数据抓取装置,包括:无头浏览器、缓存和网络爬虫,其中,所述无头浏览器,被设置为在成功登录目标网页之后,若监听到所述目标网页的AJAX请求,将监听到的AJAX请求中所携带的授权认证信息存入所述缓存中;所述缓存,被设置为存储授权认证信息;所述网络爬虫,被设置为从缓存中读取授权认证信息,并将读取到的授权认证信息添加到用于抓取网页数据的访问请求中;基于含有授权认证信息的访问请求,抓取服务器在基于授权认证信息通过认证之后返回的网页数据。
本申请实施例提供的网页数据抓取方法、装置、存储介质和设备,通过无头浏览器登录目标网页,模拟用户登录不会触发网站反机器人检测,接下来,在无头浏览器成功登录目标网页之后,通过无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中,然后,在数据抓取脚本需要从目标网页跳转至其它网页时,可以将从缓存中所读取的该授权认证信息携带在用于请求网页数据的访问请求中发送给服务器,这样,服务器通过该授权认证信息进行认证后,就会将所请求的网页数据返回给数据抓取脚本。如此,通过无头浏览器、缓存和数据抓取脚本的协同工作,在抓取数据的过程中,能够避免出现触发网站反机器人检测、认证不通过等导致网页数据抓取中断问题,从而,实现有效地抓取到所需的网页数据。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请实施例中的网页数据抓取方法的一种流程示意图;
图2为本申请实施例中的网页数据抓取方法的另一种流程示意图;
图3为本申请实施例中的网页数据抓取装置的结构示意图;
图4为本申请实施例中的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请实施例提供一种网页数据抓取方法。图1为本申请实施例中的网页数据抓取方法的流程示意图,参见图1所示,该方法可以包括:
步骤101:在通过无头浏览器成功登录目标网页之后,若无头浏览器监听到目标网页的AJAX(Asynchronous JavaScript and XML,异步的JavaScript和XML)请求,通过无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中;
步骤102:通过数据抓取脚本从缓存中读取授权认证信息,并将读取到的授权认证信息添加到用于抓取网页数据的访问请求中;
步骤103:通过数据抓取脚本,基于含有授权认证信息的访问请求,抓取服务器在基于授权认证信息通过认证之后返回的网页数据。
在实际应用中,无头浏览器,也可以称为无界面浏览器,可以是一种没有显示界面的浏览器,但是能够通过提供的各种接口,实现一般界面浏览器所能实现的除界面显示外的所有功能,例如可以访问网站服务器等。
在一种示例性实施例中,无头浏览器可以为如Puppeteer框架等。
这里,Puppeteer(木偶)是Google Chrome团队官方的无界面浏览器(Headless-Chrome),它是一个Node库,提供了一个高级的API(Application Programming Interface,应用程序接口)来控制DevTools协议上的无头版Chrome,也可以配置为使用完整(非无头)的Chrome,它拥有Chrome浏览器所有的API使用权限。
在一种示例性实施例中,通过无头浏览器成功登录目标网页的过程为:无头浏览器以预设账户信息模拟用户登录过程,向网页服务器发起登录请求,网页服务器收到无头浏览器发送的预设账户信息之后,会向SSO系统中的认证中心请求认证,当认证中心认证成功后,则通过无头浏览器成功登录目标网页。这样,由于通过无头浏览器登录目标网页,与正常用户操作浏览器的行为是一致的,只不过这些行为是自动化的,就不会触发网站的反机器人检测,能够保证网页数据抓取的有效性。
在实际应用中,授权认证信息是在网页服务器端产生的,当需要从目标网页跳转至其它网页,需要使用该授权认证信息来证明合法身份。具体来说,当通过无头浏览器成功登录目标网页之后,无头浏览器会接收到网页服务器返回的一个用于证明合法性的授权认证信息,如身份令牌(Token)。
在一种示例性实施例中,缓存可以为如Redis(Remote Dictionary Server,远程字典服务)数据库等。其中,Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value(键-值)数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是字符串(String),哈希(Hash),列表(list),集合(sets)和有序集合(sorted sets)等类型。
在本申请实施例中,数据抓取脚本主要是指通过脚本语言编写的用于抓取页面数据的脚本文件。在实际应用中,可以使用如Python等脚本语言来编写该数据抓取脚本。这里,本发明实施例不做具体限定。
在一种示例性实施例中,以数据抓取脚本由Python实现为例,数据抓取脚本可以为如Scrapy(抓取)框架等。其中,Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,是通用的网络爬虫,可以应用在包括数据挖掘、信息处理或存储历史数据等一系列的程序中。
在具体实施过程中,含有授权认证信息的访问请求,包括:用于指示抓取的网页数据的位置的URL和用于服务器进行认证的授权认证信息。其中,授权认证信息被添加在访问请求的请求头中。
举例来说,以无头浏览器由Puppeteer来实现、以缓存由Redis来实现、以数据抓取脚本由Scrapy框架实现、以含有授权认证信息的访问请求通过POST请求来实现为例,那么,可以通过Scrapy框架里的Request接口来实现含有授权认证信息的访问请求,其中,Request接口中的url参数的值为“用于指示抓取的网页数据的位置的URL”,method参数的值为“POST”,用于指示请求头的headers参数的值为Scrapy框架从Redis缓存中获取到的通过Puppeteer截获的授权认证信息。
举例来说,所抓取的网页数据可以如HTML(HyperText Markup Language,超文本标记语言)页面、文件、图片等。
在一种示例性实施例中,目标网页的URL与含有授权认证信息的访问请求中的URL是不相同的。
在一种示例性实施例中,含有授权认证信息的访问请求中的URL与监听到的AJAX请求中的URL是相同的。
在一种示例性实施例中,步骤101可以包括以下步骤1011~步骤1013:
步骤1011:通过无头浏览器根据预设的目标网页的URL,以预设账户信息登录目标网页,其中,预设账户信息为用于标识登录目标网页的用户的身份标识;
步骤1012:在无头浏览器成功登录目标网页之后,通过无头浏览器对目标网页的AJAX请求进行监听;
步骤1013:若无头浏览器监听到目标网页的AJAX请求,通过无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中。
在实际应用中,通过无头浏览器可以在从预设数据库中读取需要登录的目标网页的URL时,可以只读取一个URL,也可以读取多个URL,其中,多个URL可以为同一个网站的URL,也可以为不同网站的URL。对应地,在利用数据抓取脚本爬取网页数据时,可以只爬取一个URL的网页数据,也可以并发地爬取多个URL的网页数据。
举例来说,预设账户信息可以为如用户名、密码等能够标识登录目标网页的用户的身份标识信息。
在一种示例性实施例中,上述步骤1011可以包括:启动无头浏览器;在无头浏览器上启动浏览器窗口;根据预设的目标网页的URL,等待浏览器窗口加载目标网页;在浏览器窗口加载出目标网页中的用于输入账户信息的元素之后,输入预设账户信息,以登录目标网页。
在实际应用中,为了获取完整的网页数据,可以通过无头浏览器的模拟点击事件接口来模拟用户的输入事件,触发执行对应的输入事件。其中,点击事件包括键盘点击事件和鼠标点击事件。
举例来说,若目标网页中含有用于输入账户信息的输入框,则可以通过无头浏览器的模拟输入事件接口模拟用户在网页中输入预设账户信息;接下来,若目标网页中含有用于提交动作的按钮,则可以通过无头浏览器的模拟点击事件接口模拟用户在网页中点击提交,以使得无界面浏览器将所输入的预设账户信息发送给网站服务器。从而,实现成功登录目标网页。
在一种示例性实施例中,上述步骤1013可以包括:对监听到的AJAX请求进行解析,得到请求头信息;将请求头信息作为授权认证信息存入缓存中。
对应地,上述步骤102可以包括:通过数据抓取脚本从缓存中读取授权认证信息,并将读取到的授权认证信息添加到用于抓取网页数据的访问请求的请求头信息中,得到含有授权认证信息的访问请求。
在一种示例性实施例中,在上述步骤102之后,上述方法还可以包括:若监听到新的AJAX请求,通过无头浏览器将缓存中所存储的授权认证信息更新为监听到的新的AJAX请求中所携带的新的授权认证信息。
举例来说,可以设置预设定时时长,以每预设定时时长对缓存中所存储的授权认证信息进行更新一次。如此,能够避免出现授权认证信息失效导致网页数据抓取中断,从而,确保有效地抓取到所需的网页数据。
在一种示例性实施例中,上述步骤103可以包括:通过数据抓取脚本将含有授权认证信息的访问请求发送给服务器,以使服务器基于授权认证信息进行认证;接收服务器在基于授权认证信息通过认证之后返回的网页数据;从服务器在基于授权认证信息通过认证之后返回的网页数据中,抓取满足预设抓取条件的网页数据。如此,可以避免抓取到冗余数据。
举例来说,当网页数据是通过HTML来实现的时,上述预设抓取条件可以是通过HTML标签或者HTML标签的属性来设置。例如,上述数据抓取规则可以设置为如去掉网页中的广告数据、去掉网页中的版权声明数据等。由本领域技术人员根据实际需要来设定,这里,本发明实施例不做具体限定。
在一种示例性实施例中,在上述步骤103之后,上述方法还可以包括:将抓取到的网页数据发送给任意能够进行后续存储和/或处理的实体。
举例来说,为了实现数据持久化存储,在数据抓取脚本抓取到所需要的网页数据之后,数据抓取脚本可以将所抓取到的网页数据发送给数据存储设备。
举例来说,由于往往需要对抓取到的海量网页数据进行后续的处理,因此,通常会使用服务器端设备来接收抓取的数据以进行进一步的处理。示例性地,上述服务器端设备可以如用于提供数据存储服务的云服务器等。
至此,便完成了基于无头浏览器、缓存和数据抓取脚本来抓取网页数据的过程。
由上述内容可知,本申请实施例提供的网页数据抓取方法,首先,通过无头浏览器登录目标网页,无头浏览器模拟用户登录不会触发网站反机器人检测,接下来,在无头浏览器成功登录目标网页之后,通过无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中,然后,在数据抓取脚本需要从目标网页跳转至其它网页时,可以将从缓存中所读取的该授权认证信息发送给网页服务器,这样,网页服务器通过该授权认证信息进行认证后,就会将数据抓取脚本所请求的网页数据返回给数据抓取脚本,这样,通过无头浏览器、缓存和数据抓取脚本的协同,在抓取数据的过程中,能够避免出现触发网站反机器人检测、避免认证不通过等问题导致网页数据抓取中断,从而,实现有效地抓取到所需的网页数据。
基于前述实施例,下面以无头浏览器由Puppeteer框架来实现、以缓存由Redis数据库来实现、以数据抓取脚本由Scrapy框架实现为例,参见图2所示的流程示意图,对本申请实施例中网页数据抓取方法的过程进行详细说明。
S1,通过Puppeteer的Puppeteer.launch()接口生成了一个browser的实例,以启动无头浏览器。这里,对应于浏览器,launch方法可以传入配置项,其中,参数headless用于控制是否开启浏览器的无头模式。例如,传入参数{headless:false}可以关闭headless模式;传入参数{headless:true}可以打开headless模式。
S2,通过browser实例上的browser.newPage()接口可以打开一个新窗口并返回新窗口的实例page,以便接下来通过page上的各种接口可以对网页进行操作。
S3,通过page实例上的page.goto()接口加载目标网页的URL地址页。
S4,通过page实例上的page.waitForSelector()接口等待浏览器窗口加载目标网页,直至在浏览器窗口加载出目标网页中的用于输入账户信息的元素之后,执行后续步骤模拟用户登录,这样,不会触发网站反机器人检测。
这里,通过Puppeteer API伪装用户登录,由于网页运行在完整的浏览器环境中,SSO登录页面的跳转、Cookie转换等环节均不需要开发者管理,只需要使用waitForSelector API等待指定的DOM(Document Object Model,文本对象模型)元素,如用于输入账户信息的元素加载完毕即可。
S5,通过page实例上的page.type()接口输入预设账户信息,并通过page实例上的page.click()接口模拟用户提交预设账户信息,以便网站服务器基于预设账户信息验证用户身份,当验证成功时,无头浏览器成功登录目标网页。
S6,在无头浏览器成功登录目标网页之后,通过page实例上的page.on()接口,监听目标网页上的AJAX请求,当监听到AJAX请求时,通过AJAX请求的request().headers()接口截获AJAX请求的头部数据,这样,就获取到了网络爬虫在抓取网页数据时发送请求时所需要的授权认证信息。然后,将监听到的AJAX请求的请求头(即请求的头部数据)存入到Redis缓存中,即将授权认证信息存入Redis缓存,以供Scrapy框架在抓取网页数据时使用。
这里,将Redis缓存作为无头浏览器Puppeteer和数据抓取脚本Scrapy之间的数据桥梁,能够高效的进行数据通信。
S7,Scrapy框架在每次发送用于抓取网页数据的访问请求之前,通过Redis的get()接口来获取Puppeteer截获的授权认证信息,加入到自己想要请求的页面对应的访问请求的请求头(headers)中,这样,在将基于含有授权认证信息的访问请求发送给服务器之后,以使服务器基于授权认证信息进行认证,然后,在通过认证之后服务器会返回Scrapy框架所请求的网页数据。这样,就合法地获取到所需要抓取的网页数据,避免出现网络爬虫中断抓取网页数据的情况,实现了有效地抓取网页数据。
在本申请实施例中,将Puppeteer与Scrapy相结合,解决了SSO单点登录网站在遇到Scrapy框架不方便处理不同域下Cookie共享而导致爬虫开发困难问题。技术方案巧妙结合Puppeteer作为一个无界面的浏览器拥有所有API权限,能够模拟用户登录,不会触发网站反机器人检测的优点,通过Scrapy协同工作,并使用Redis缓存作为数据桥梁,能够高效的进行数据通信。如此,能够避免因网络爬虫在不同域下身份认证失败或触发网站反机器人检测导致出现网页数据抓取中断的情况,从而,实现有效地抓取页面数据。
基于同一发明构思,本申请实施例提供了一种网页数据抓取装置。图3为本申请实施例中的网页数据抓取装置的结构示意图,参见图3所示,该装置30可以包括:无头浏览器301、缓存302和网络爬虫303,其中,
无头浏览器301,被设置为在成功登录目标网页之后,若监听到目标网页的AJAX请求,将监听到的AJAX请求中所携带的授权认证信息存入缓存302中;
缓存302,被设置为存储授权认证信息;
网络爬虫303,被设置为从缓存302中读取授权认证信息,并将读取到的授权认证信息添加到用于抓取网页数据的访问请求中;基于含有授权认证信息的访问请求,抓取服务器在基于授权认证信息通过认证之后返回的网页数据。
在本申请实施例中,目标网页的URL与含有授权认证信息的访问请求中的URL是不相同的,含有授权认证信息的访问请求中的URL与监听到的AJAX请求中的URL是相同的。
在本申请实施例中,无头浏览器,被设置为在通过无头浏览器成功登录目标网页之后,若无头浏览器监听到目标网页的AJAX请求,通过无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中,可以包括:无头浏览器,被设置为根据预设的目标网页的URL,以预设账户信息登录目标网页,其中,预设账户信息为用于标识登录目标网页的用户的身份标识;在无头浏览器成功登录目标网页之后,对目标网页的AJAX请求进行监听;若无头浏览器监听到目标网页的AJAX请求,将监听到的AJAX请求中所携带的授权认证信息存入缓存中。
在本申请实施例中,无头浏览器,被设置为根据预设的目标网页的URL,以预设账户信息登录目标网页,可以包括:启动无头浏览器;在无头浏览器上启动浏览器窗口;根据预设的目标网页的URL,等待浏览器窗口加载目标网页;在浏览器窗口加载出目标网页中的用于输入账户信息的元素之后,输入预设账户信息,以登录目标网页。
在本申请实施例中,网络爬虫,被设置为基于含有授权认证信息的访问请求,抓取服务器在基于授权认证信息通过认证之后返回的网页数据,可以包括:网络爬虫,被设置为将含有授权认证信息的访问请求发送给服务器,以使服务器基于授权认证信息进行认证;接收服务器在基于授权认证信息通过认证之后返回的网页数据;从服务器在基于授权认证信息通过认证之后返回的网页数据中,抓取满足预设抓取条件的网页数据。
在本申请实施例中,无头浏览器,被设置为将监听到的AJAX请求中所携带的授权认证信息存入缓存中,可以包括:无头浏览器,被设置为对监听到的AJAX请求进行解析,得到请求头信息;将请求头信息作为授权认证信息存入缓存中。
在本申请实施例中,无头浏览器由Puppeteer框架实现,缓存由远程字典服务Redis数据库实现,数据抓取脚本由抓取Scrapy框架实现。
基于同一发明构思,本申请实施例提供一种计算机设备。图4为本申请实施例中的计算机设备的结构示意图,参见图4所示,该计算机设备40包括:至少一个处理器401;以及与处理器401连接的至少一个存储器402、总线403;其中,处理器401、存储器402通过总线403完成相互间的通信;处理器401用于调用存储器402中的程序指令,以执行上述一个或多个实施例中的网页数据抓取方法的步骤。
在实际应用中,上述处理器可由中央处理器(Central Processing Unit,CPU)、微处理器(Micro Processor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程门阵列(Field Programmable Gate Array,FPGA)等实现。存储器可能包括计算机可读存储介质中的非永久性存储器,随机存储器(Random Access Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read Only Memory,ROM)或闪存(Flash RAM),存储器包括至少一个存储芯片。
需要说明的是,在本申请实施例中,如果以软件功能模块的形式实现上述一个或多个实施例中的网页数据抓取方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例方法的全部或部分。
相应地,基于同一发明构思,本申请实施例再提供一种计算机可读存储介质,上述计算机可读存储介质包括存储的程序,其中,在程序运行时控制存储介质所在计算机设备执行上述一个或多个实施例中的网页数据抓取方法的步骤。
在实际应用中,上述计算机可读存储介质可以如:ROM/RAM、磁碟、光盘等。
这里需要指出的是:以上装置、计算机设备或计算机可读存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置、计算机设备或计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (10)
1.一种网页数据抓取方法,包括:
在通过无头浏览器成功登录目标网页之后,若所述无头浏览器监听到所述目标网页的AJAX请求,通过所述无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中;
通过数据抓取脚本从缓存中读取授权认证信息,并将读取到的授权认证信息添加到用于抓取网页数据的访问请求中;
通过所述数据抓取脚本,基于含有授权认证信息的访问请求,抓取服务器在基于授权认证信息通过认证之后返回的网页数据。
2.根据权利要求1所述的方法,其特征在于,所述目标网页的统一资源定位符URL与含有授权认证信息的访问请求中的URL是不相同的,含有授权认证信息的访问请求中的URL与监听到的AJAX请求中的URL是相同的。
3.根据权利要求1所述的方法,其特征在于,所述在通过无头浏览器成功登录目标网页之后,若所述无头浏览器监听到所述目标网页的AJAX请求,通过所述无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中,包括:
通过所述无头浏览器根据预设的目标网页的URL,以预设账户信息登录所述目标网页,其中,预设账户信息为用于标识登录目标网页的用户的身份标识;
在所述无头浏览器成功登录所述目标网页之后,通过所述无头浏览器对所述目标网页的AJAX请求进行监听;
若无头浏览器监听到目标网页的AJAX请求,通过所述无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中。
4.根据权利要求3所述的方法,其特征在于,所述通过所述无头浏览器根据预设的目标网页的URL,以预设账户信息登录所述目标网页,包括:
启动所述无头浏览器;
在所述无头浏览器上启动浏览器窗口;
根据预设的目标网页的URL,等待所述浏览器窗口加载所述目标网页;
在所述浏览器窗口加载出所述目标网页中的用于输入账户信息的元素之后,输入预设账户信息,以登录目标网页。
5.根据权利要求1所述的方法,其特征在于,所述通过所述数据抓取脚本,基于含有授权认证信息的访问请求,抓取服务器在基于授权认证信息通过认证之后返回的网页数据,包括:
通过所述数据抓取脚本将含有授权认证信息的访问请求发送给服务器,以使服务器基于授权认证信息进行认证;
接收所述服务器在基于授权认证信息通过认证之后返回的网页数据;
从所述服务器在基于授权认证信息通过认证之后返回的网页数据中,抓取满足预设抓取条件的网页数据。
6.根据权利要求1所述的方法,其特征在于,所述通过所述无头浏览器将监听到的AJAX请求中所携带的授权认证信息存入缓存中,包括:
对监听到的AJAX请求进行解析,得到请求头信息;
将所述请求头信息作为所述授权认证信息存入缓存中。
7.根据权利要求1所述的方法,其特征在于,所述无头浏览器由Puppeteer框架实现,所述缓存由远程字典服务Redis数据库实现,所述数据抓取脚本由抓取Scrapy框架实现。
8.一种计算机可读存储介质,包括:存储的程序,其中,在所述程序运行时控制所述存储介质所在计算机设备执行如权利要求1至7任一项中所述的网页数据抓取方法的步骤。
9.一种计算机设备,包括:
至少一个处理器;
以及与所述处理器连接的至少一个存储器、总线;
其中,所述处理器、存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1至7任一项中所述的网页数据抓取方法的步骤。
10.一种网页数据抓取装置,包括:无头浏览器、缓存和网络爬虫,其中,
所述无头浏览器,被设置为在成功登录目标网页之后,若监听到所述目标网页的AJAX请求,将监听到的AJAX请求中所携带的授权认证信息存入所述缓存中;
所述缓存,被设置为存储授权认证信息;
所述网络爬虫,被设置为从缓存中读取授权认证信息,并将读取到的授权认证信息添加到用于抓取网页数据的访问请求中;基于含有授权认证信息的访问请求,抓取服务器在基于授权认证信息通过认证之后返回的网页数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010334525.4A CN111552854A (zh) | 2020-04-24 | 2020-04-24 | 一种网页数据抓取方法、装置、存储介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010334525.4A CN111552854A (zh) | 2020-04-24 | 2020-04-24 | 一种网页数据抓取方法、装置、存储介质和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111552854A true CN111552854A (zh) | 2020-08-18 |
Family
ID=72007648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010334525.4A Pending CN111552854A (zh) | 2020-04-24 | 2020-04-24 | 一种网页数据抓取方法、装置、存储介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111552854A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113065055A (zh) * | 2021-04-21 | 2021-07-02 | 平安国际智慧城市科技股份有限公司 | 新闻资讯抓取方法、装置、电子设备及存储介质 |
CN113282815A (zh) * | 2021-06-11 | 2021-08-20 | 上海淇玥信息技术有限公司 | 一种用于多次验证交互的数据抓取方法、装置和电子设备 |
CN113626675A (zh) * | 2021-08-10 | 2021-11-09 | 北京天融信网络安全技术有限公司 | 一种数据处理方法、系统及计算机存储介质 |
CN113742550A (zh) * | 2021-08-20 | 2021-12-03 | 广州市易工品科技有限公司 | 基于浏览器的数据获取方法、装置和系统 |
CN113742551A (zh) * | 2021-09-07 | 2021-12-03 | 贵州电子商务云运营有限责任公司 | 一种基于scrapy和puppeteer的动态数据抓取方法 |
CN113934914A (zh) * | 2021-12-20 | 2022-01-14 | 成都橙视传媒科技股份公司 | 一种针对新闻媒体批量加密数据的采集方法 |
CN114189379A (zh) * | 2021-12-08 | 2022-03-15 | 安天科技集团股份有限公司 | 一种网页资源处理方法、装置及电子设备 |
CN114491356A (zh) * | 2021-12-27 | 2022-05-13 | 北京金堤科技有限公司 | 数据获取方法及其装置、计算机存储介质、电子设备 |
CN115329225A (zh) * | 2022-10-18 | 2022-11-11 | 中孚信息股份有限公司 | 基于服务端浏览器的页面预渲染方法、系统及设备 |
CN117278599A (zh) * | 2023-11-21 | 2023-12-22 | 深圳万物安全科技有限公司 | 北向接口提供方法、设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100058440A1 (en) * | 2008-08-27 | 2010-03-04 | Yahoo! Inc. | Interaction with desktop and online corpus |
CN104391884A (zh) * | 2014-11-06 | 2015-03-04 | 宁波市鄞州安业贸易有限公司 | 一种爬虫系统 |
CN105631030A (zh) * | 2015-12-30 | 2016-06-01 | 福建亿榕信息技术有限公司 | 一种通用的网络爬虫模拟登录方法及系统 |
CN106897357A (zh) * | 2017-01-04 | 2017-06-27 | 北京京拍档科技股份有限公司 | 一种用于带验证分布式智能爬取网络信息的方法 |
CN107944055A (zh) * | 2017-12-22 | 2018-04-20 | 成都优易数据有限公司 | 一种解决Web证书认证的爬虫方法 |
CN110968760A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 网页数据的爬取方法、装置、网页登录方法及装置 |
-
2020
- 2020-04-24 CN CN202010334525.4A patent/CN111552854A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100058440A1 (en) * | 2008-08-27 | 2010-03-04 | Yahoo! Inc. | Interaction with desktop and online corpus |
CN104391884A (zh) * | 2014-11-06 | 2015-03-04 | 宁波市鄞州安业贸易有限公司 | 一种爬虫系统 |
CN105631030A (zh) * | 2015-12-30 | 2016-06-01 | 福建亿榕信息技术有限公司 | 一种通用的网络爬虫模拟登录方法及系统 |
CN106897357A (zh) * | 2017-01-04 | 2017-06-27 | 北京京拍档科技股份有限公司 | 一种用于带验证分布式智能爬取网络信息的方法 |
CN107944055A (zh) * | 2017-12-22 | 2018-04-20 | 成都优易数据有限公司 | 一种解决Web证书认证的爬虫方法 |
CN110968760A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 网页数据的爬取方法、装置、网页登录方法及装置 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113065055B (zh) * | 2021-04-21 | 2024-04-02 | 深圳赛安特技术服务有限公司 | 新闻资讯抓取方法、装置、电子设备及存储介质 |
CN113065055A (zh) * | 2021-04-21 | 2021-07-02 | 平安国际智慧城市科技股份有限公司 | 新闻资讯抓取方法、装置、电子设备及存储介质 |
CN113282815A (zh) * | 2021-06-11 | 2021-08-20 | 上海淇玥信息技术有限公司 | 一种用于多次验证交互的数据抓取方法、装置和电子设备 |
CN113626675A (zh) * | 2021-08-10 | 2021-11-09 | 北京天融信网络安全技术有限公司 | 一种数据处理方法、系统及计算机存储介质 |
CN113742550A (zh) * | 2021-08-20 | 2021-12-03 | 广州市易工品科技有限公司 | 基于浏览器的数据获取方法、装置和系统 |
CN113742550B (zh) * | 2021-08-20 | 2024-04-19 | 广州市易工品科技有限公司 | 基于浏览器的数据获取方法、装置和系统 |
CN113742551A (zh) * | 2021-09-07 | 2021-12-03 | 贵州电子商务云运营有限责任公司 | 一种基于scrapy和puppeteer的动态数据抓取方法 |
CN114189379A (zh) * | 2021-12-08 | 2022-03-15 | 安天科技集团股份有限公司 | 一种网页资源处理方法、装置及电子设备 |
CN114189379B (zh) * | 2021-12-08 | 2024-01-26 | 安天科技集团股份有限公司 | 一种网页资源处理方法、装置及电子设备 |
CN113934914A (zh) * | 2021-12-20 | 2022-01-14 | 成都橙视传媒科技股份公司 | 一种针对新闻媒体批量加密数据的采集方法 |
CN114491356A (zh) * | 2021-12-27 | 2022-05-13 | 北京金堤科技有限公司 | 数据获取方法及其装置、计算机存储介质、电子设备 |
CN115329225A (zh) * | 2022-10-18 | 2022-11-11 | 中孚信息股份有限公司 | 基于服务端浏览器的页面预渲染方法、系统及设备 |
CN117278599A (zh) * | 2023-11-21 | 2023-12-22 | 深圳万物安全科技有限公司 | 北向接口提供方法、设备及可读存储介质 |
CN117278599B (zh) * | 2023-11-21 | 2024-03-08 | 深圳万物安全科技有限公司 | 北向接口提供方法、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111552854A (zh) | 一种网页数据抓取方法、装置、存储介质和设备 | |
US10262142B2 (en) | Systems and methods for advanced dynamic analysis scanning | |
CN106897357B (zh) | 一种用于带验证分布式智能爬取网络信息的方法 | |
US10243679B2 (en) | Vulnerability detection | |
US9614862B2 (en) | System and method for webpage analysis | |
WO2016173200A1 (zh) | 用于检测恶意网址的方法和系统 | |
US8949990B1 (en) | Script-based XSS vulnerability detection | |
US20170257390A1 (en) | System and methods for scalably identifying and characterizing structural differences between document object models | |
JP6533871B2 (ja) | ウェブアプリケーションへのサインオンを制御するためのシステムおよび方法 | |
Shahriar et al. | Client-side detection of cross-site request forgery attacks | |
CN110266661B (zh) | 一种授权方法、装置及设备 | |
Parameshwaran et al. | DexterJS: Robust testing platform for DOM-based XSS vulnerabilities | |
CN109033838A (zh) | 网站安全检测方法和装置 | |
AU2015318254A1 (en) | Detection and repair of broken single sign-on integration | |
CN103384888A (zh) | 用于恶意软件的检测和扫描的系统和方法 | |
Mitropoulos et al. | How to train your browser: Preventing XSS attacks using contextual script fingerprints | |
US10614417B2 (en) | System and method for electronic lead verification | |
US11356433B2 (en) | System and method for detecting unauthorized activity at an electronic device | |
CN110555146A (zh) | 一种网络爬虫伪装数据的生成方法及系统 | |
CN112637361A (zh) | 一种页面代理方法、装置、电子设备及存储介质 | |
Durieux et al. | Fully automated HTML and Javascript rewriting for constructing a self‐healing web proxy | |
Kapodistria et al. | An advanced web attack detection and prevention tool | |
CN114491560A (zh) | 一种漏洞检测方法、装置、存储介质及电子设备 | |
US20160261715A1 (en) | System and method for securing a web server | |
JP5753302B1 (ja) | ウェブページへのアクセスを警告するためのプログラム、方法、及びシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |