java爬虫抓取动态网页(技术公开了基于Ajax的新闻网页动态数据的抓取方法及系统)

优采云 发布时间: 2021-10-18 05:07

  java爬虫抓取动态网页(技术公开了基于Ajax的新闻网页动态数据的抓取方法及系统)

  本发明专利技术公开了一种基于Ajax的新闻网页动态数据抓取方法及系统;建立新闻网页抓取内容库,设置新闻网页抓取内容库的编码方式;获取待抓取新闻网页的新闻列表页的URL地址信息;访问URL地址,判断新闻列表页面是否通过ajax动态加载数据;如果是,通过浏览器开发者工具找到请求的数据源;判断请求的数据源的编码是否一致,如果不一致,则对数据源进行编码转换,解析数据格式:将数据源的格式解析为消息的后台语言处理的对象格式或数组格式列表页面;将解析后的数据封装成对象或数组类型;判断是否封装成功,成功只需遍历数据对象或数组类型的输出列表;使用网络爬虫获取的输出列表采集;将采集收到的数据存入数据库。

  基于Ajax的新闻网页动态数据抓取方法及系统

  本发明公开了一种基于Ajax的动态新闻网络爬取数据的系统及方法;建立新闻网络爬取内容库,设置新闻网络爬取内容库编码;用于抓取新闻网页新闻页面的地址 URL;访问URL地址,判断新闻页面是否是通过Ajax数据的动态加载;如果是,通过浏览器开发者工具找到请求的数据源;判断请求数据源编码是否一致,如果不一致,则进行数据源编码转换,分析数据格式:格式数据源成为后台语言处理对象格式或数组数据格式的新闻页面;分析对象或数组类型判断后的包;打包成功,成功将数据对象或数组类型 爬虫采集的输出列表,

  下载所有详细的技术数据

  【技术实现步骤总结】

  本专利技术涉及一种基于Ajax的新闻网页动态数据捕获方法及系统。

  技术介绍

  目前,新闻网站的信息具有类别多、更新频率快、多平台发布的特点,数据检索方式也非常灵活。很多新闻网站页面使用ajax来调用数据,这样通过一个数据源就可以在不同的平台上进行解析。例如,PC 网页和移动网页可以通过不同的模板共享数据请求。呈现不同的排版风格。在采集爬取网站新闻数据,会发现很多网站数据是通过ajax获取的动态内容,并没有固定的静态模板。获取数据的 JavaScript 脚本程序往往在整个页面的 DOM 结构加载完毕后执行。如果整个网页的 DOM 结构还没有被加载,网络爬虫在访问这个地方时不会获取数据内容,大大降低了网络数据的效率和质量采集。如果需要获取通过ajax请求动态加载的数据,则需要分析网站的请求的数据源地址。Ajax调用的数据格式多为JSON、JSONP、XML或Inc。经过分析,不同的网站使用不同的网络技术,因此调用Ajax请求时采用的方案也有很大差异,数据源存储格式也是多种多样的。通过对现有技术的分析,发现目前还没有统一的自动化的Ajax数据源分析方法,现有的方法不能解决Ajax一次性获取动态内容的所有问题。

  首先,大部分的实现方法还是通过JavaScript脚本中的特征值进行检索,从而进一步猜测和推断Ajax请求的内容。但是,这并不能准确地找出您要采集 的目标数据。目前一个页面很可能收录多个ajax请求,有的是用户信息认证请求,有的是订阅信息的返回数据,有的是广告推送信息。这些信息混杂在一起,仅通过脚本代码中的特征值很难区分哪些数据源需要采集。另外,脚本代码的特征值分析也仅限于JavaScript代码未加密的情况。如今,许多网站出于安全性和访问效率的要求,可能会组合多个JavaScript脚本文件,然后对其进行加密。它会使现有的特征值消失。其次,Ajax调用方法本身会存在跨域问题,这是其自身独有的安全机制。即不在同一个域名下,脚本语言仍然无法成功执行请求并返回数据。在处理这样的调用方式时,由于没有统一域名下的网络环境,很难自动完成Ajax触发请求。也有一些网站在他们的程序中有反爬虫程序。如果经常被访问,二维码等内容会阻止新闻数据的继续采集。最后,即使找到了 Ajax 请求的数据源,仍然会出现格式和编码不匹配的情况。例如,JAVA 语言生成的 JSON 数据不能直接用 PHP 语言处理。一些返回的数据在 JSON 格式本身中会有英文双引号和符号冲突。也有一些请求使用JSONP请求方式,即带有请求头的JSON格式。

  技术实现思路

  本专利技术的目的是为了解决上述问题,提供一种基于Ajax的新闻网页动态数据捕获方法和系统。专注于数据源的战略分析,针对不同情况采用定制化解决方案。为实现上述目的,本专利技术采用如下技术方案: 基于Ajax的新闻网页动态数据抓取方法,包括以下步骤: 步骤(101):建立新闻网页抓取内容数据库,并设置新闻网页爬取获取内容库的编码方式;获取要爬取的新闻页面的新闻列表页面的URL地址;步骤(102):访问新闻的URL地址要抓取的新闻页面的列表页面,通过浏览器开发者工具判断新闻列表页面是否通过Ajax动态加载;如果是,通过浏览器开发者工具找到Ajax请求的数据源;如果没有,结束;step (103): 判断Ajax请求的数据源是否与步骤(101))的编码方式一致。如果不一致,则对数据源进行编码转换,然后去step(104);如果一致,直接进入step(104); Step(104):解析数据格式:将数据源的格式解析成对象新闻列表页面后台语言处理的格式或数组格式; Step (105): Change step (10 4) 将解析的数据封装成对象或数组类型;判断封装是否为成功的,

  特殊字符或乱码批量替换,转换为可处理的字符。特殊字符包括:斜线、反斜线、冒号、星号、问号、引号、大于号、小于号或可能影响 JSON 格式的管道符号。可处理的字符包括中文引号、中文逗号、中文冒号等。 步骤(103):如果编码方式不同,则统一编码方式,UTF-8的编码方式步骤(102)和步骤(103))之间设置步骤如下: 步骤(1020):如果Ajax请求是跨域的请求,通过PHP的CURL方式模拟传入页面,通过主机获取请求数据地址;

  如果返回的内容收录中英文单引号,如果双引号不规范,使用PHP语言的字符替换功能过滤特殊字符,替换为空字符。step(1042) JSONP是JSON格式的一种使用方式,通常在进行跨域调用的时候使用。因为要对请求进行识别,所以通常使用回调参数作为请求头,而JSON 内容用引号包裹,JSON 格式是带有请求头的 JSON 格式,但是在 JSON 格式解析中,需要将其去掉才能成为标准的 JSON 格式。使用PHP语言的字符替换功能过滤特殊字符并替换为空字符。step(1042) JSONP是JSON格式的一种使用方式,通常在进行跨域调用的时候使用。因为要对请求进行识别,所以通常使用回调参数作为请求头,而JSON 内容用引号包裹,JSON 格式是带有请求头的 JSON 格式,但是在 JSON 格式解析中,需要将其去掉才能成为标准的 JSON 格式。使用PHP语言的字符替换功能过滤特殊字符并替换为空字符。step(1042) JSONP是JSON格式的一种使用方式,通常在进行跨域调用的时候使用。因为要对请求进行识别,所以通常使用回调参数作为请求头,而JSON 内容用引号包裹,JSON 格式是带有请求头的 JSON 格式,但是在 JSON 格式解析中,需要将其去掉才能成为标准的 JSON 格式。JSON 格式是带有请求头的 JSON 格式。但是,在 JSON 格式解析中,需要将其删除才能成为标准的 JSON 格式。JSON 格式是带有请求头的 JSON 格式。但是,在 JSON 格式解析中,需要将其删除才能成为标准的 JSON 格式。

  由于上述原因,需要去除返回内容的请求头和括号。步骤(1043): 因为有些特殊字符会影响格式规范,有些特殊字符无法识别,所以在封装数据之前,要对这些特殊字符进行处理,即批量替换。空字符。步骤(105):如果步骤(104))解析的数据不是键值对类型,那么步骤(104))解析的数据将封装成data对象,如果步骤(104)中解析的数据是键值对类型,则步骤(104))解析的数据

  

  【技术保护点】

  @4); 如果一致,直接进入step(104); step(104):解析数据格式:将数据源的格式解析为后台语言处理的对象格式或数组格式新闻列表页; step(105):将step解析的数据(104) 封装成对象或数组类型;判断封装是否成功,如果成功,直接进入step (106);否则,将数据作为字符串处理;完成后,转到步骤(106);步骤(10 6):遍历数据对象或数组类型到输出list; Step(107):使用网络爬虫采集 Step(106)获取输出列表; Step(108):存储来自采集的数据@> 到数据库。@4); 如果一致,直接进入step(104); step(104):解析数据格式:将数据源的格式解析为后台语言处理的对象格式或数组格式新闻列表页; step(105):将step解析的数据(104) 封装成对象或数组类型;判断封装是否成功,如果成功,直接进入step (106);否则,将数据作为字符串处理;完成后,转到步骤(106);步骤(10 6):遍历数据对象或数组类型到输出list; Step(107):使用网络爬虫采集 Step(106)获取输出列表; Step(108):存储来自采集的数据@> 到数据库。将数据源的格式解析为新闻列表页面后台语言处理的对象格式或数组格式;step(105):将step(104)解析出来的数据转换成对象或数组类型;判断是否封装成功,如果成功,直接进入步骤(106)@) >;否则,将数据作为字符串处理;完成后,转步骤(106);步骤(10 6):遍历数据对象或数组类型到输出列表;步骤(10< @7):使用网络爬虫采集 Step(106)获取输出列表; Step(108):将采集中的数据存入数据库。将数据源的格式解析为新闻列表页面后台语言处理的对象格式或数组格式;step(105):将step(104)解析出来的数据转换成对象或数组类型;判断是否封装成功,如果成功,直接进入步骤(106)@) >;否则,将数据作为字符串处理;完成后,转步骤(106);步骤(106):遍历数据对象或数组类型到输出列表;步骤(10< @7):使用网络爬虫采集 Step(106)获取输出列表; Step(108):将采集中的数据存入数据库。遍历数据对象或数组类型到输出列表;Step(107):使用网络爬虫采集 Step(106)获取输出列表;Step(108):存储来自采集的数据)到数据库。遍历数据对象或数组类型到输出列表;Step(107):使用网络爬虫采集 Step(106)获取输出列表;Step(108):存储来自采集的数据)到数据库。

  【技术特点摘要】

  1.一种基于Ajax的新闻网页动态数据抓取方法,其特点是如下步骤: 步骤(101):建立新闻网页爬取内容库,建立新闻网页爬取内容库编码方法; 获取待抓取新闻页面的新闻列表页面的URL地址; 步骤(102):访问待抓取新闻页面的新闻列表页面的URL地址,使用浏览器开发者工具判断新闻列表页面是否通过ajax动态加载数据;如果是,通过浏览器开发者工具查找ajax请求的数据源;如果不是,则结束;步骤(103):确定ajax请求的数据源和步骤(10)1)的编码方式是否一致,如果不一致,对数据源进行编码转换,然后转步骤(104);如果一致,直接转步骤(104);步骤(104):分析数据)格式:将数据源的格式解析为新闻列表页面后台语言处理的对象格式或数组格式;步骤(105):更改步骤(104)将解析的数据封装转化为对象或数组类型;判断是否封装成功,如果成功,直接进入步骤(106);否则,将数据作为字符串处理;完成后,进入步骤(106)) @)>; Step(106):遍历数据对象或数组类型输出列表; Step(107):使用网络爬虫采集 Step(106)@ > 获取输出列表;步骤 (108):将来自 采集 的数据存储在数据库中。

  2.如权利要求1所述的基于Ajax的新闻网页动态数据抓取方法,其特征在于步骤(101)URL地址包括临时URL地址和重定向地址,需要添加时间戳参数或签名参数后访问的URL地址;步骤(101))的新闻网络爬取内容库的字段包括:新闻标题、新闻发布时间、新闻爬取时间、新闻来源和新闻内容;所述步骤(101))的新闻网页抓取的内容数据库的编码方法包括:UTF-8编码或GBK编码。3.如权利要求1所述的动态抓取方法基于Ajax的新闻网页数据特征在于步骤(102)的浏览器开发工具包括:谷歌Chrome开发工具。4.如权利要求1所述的基于Ajax的新闻网页动态数据捕获方法,其特征在于步骤(103)如果Ajax请求的数据源中存在特殊字符或乱码5.如权利要求1所述的基于Ajax的新闻网页动态数据捕获方法,其特征在于,步骤(10) 3):如果编码方式不同,则统一编码方式,统一采用UTF-8编码方式。 2.权利要求1,其特征在于步骤(102)与步骤(103))之间的步骤如下:步骤(1020):如果Ajax请求是跨域请求,通过PHP的CURL方法模拟传入页面,通过host获取请求的数据地址;步骤(1021):如果Ajax 请求是 P...

  【专利技术属性】

  技术研发人员:张紫阳、韩强、梁成富、李广庆、李斌、

  申请人(专利权):,

  类型:发明

  国家省市:山东;37

  下载所有详细技术资料 我是此专利的所有者

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线