动态网页抓取(2.JS型网页举例(一)_社会万象_光明网(组图) )

优采云 发布时间: 2022-01-06 01:01

  动态网页抓取(2.JS型网页举例(一)_社会万象_光明网(组图)

)

  时间:2020年7月29日

  联系邮箱:[emailprotected]

  写在前面:本文仅供参考和学习,请勿用于其他用途。

  1.嵌入式网络爬虫

  示例:最常见的分页页面

  

  这里我以天津的请愿页面为例,(地址:)。

  右键打开源码找到iframe标签,取出里面的src地址

  

  在src地址输入页面后不要停留在首页。主页网址通常比较特殊,无法分析。我们需要输入主页以外的任何地址。

  

  进入第二个页面,我们可以找到页面中的规则,只需要改变curpage之后的数字就可以切换到不同的页面,这样我们只需要一个循环就可以得到所有数据页面的地址,然后就可以了发送获取请求以获取数据。

  2.JS 可加载网页抓取

  示例:一些动态网页没有采用嵌入网页的方式,而是选择了JS加载

  这里我举一个北京请愿页面的例子()

  我们会发现,当您选择不同的页面时,URL 不会改变,这与上面提到的嵌入页面相同。

  

  右键打开源码,并没有找到iframe、html等内嵌页面的标志性标签,但是不难发现放置数据的div中有一个id,就是JS加载过程的一个明显标志。现在进入控制台的网络

  

  执行一次页面跳转(我跳转到第3页),注意控制台左侧新出现的文件JS,找到里面加载了新数据的JS文件,打开会发现PageCond/begin: 1 8、 PageCond/length: 6个类似的参数,很明显网站根据这个参数加载相关数据,和post请求一起发送给网站,就可以得到我们想要的数据了。

  payloadData ={

"PageCond/begin": (i-1)*6,

"PageCond/length": 6,

"PageCond/isCount": "false",

"keywords": "",

"orgids": "",

"startDat e": "",

"endDate": "",

"letterType": "",

"letterStatue": ""}

dumpJsonData = json.dumps(payloadData)

headers = {"Host": "www.beijing.gov.cn",

"Origin": "http://www.beijing.gov.cn",

"Referer": "http://www.beijing.gov.cn/hudong/hdjl/",

"User-Agent": str(UserAgent().random)#,

}

req = requests.post(url,headers=headers,data=payloadData)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线