抓取动态网页(2020年7月29日写在前面:右键打开源码找到iframe标签 )

优采云 发布时间: 2021-11-08 12:06

  抓取动态网页(2020年7月29日写在前面:右键打开源码找到iframe标签

)

  时间:2020年7月29日

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

  1.嵌入式网络爬虫

  示例:最常见的分页页面

  

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

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

  

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

  

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

  2.JS 可加载网页抓取

  示例:一些动态网页不使用网页嵌入,而是选择JS加载

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

  We will find that when a different page is selected, the URL will not change, which is the same as the embedded page mentioned above.

  

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

  

  执行一次页面跳转(我跳转到第3页),注意控制台左侧新出现的文件JS,找到里面加载新数据的JS文件,打开,会发现PageCond/begin: 18、 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人工客服


线