mysql5资源共享

 找回密码
 立即注册
查看: 318|回复: 0

[Python] python爬虫对于Ajax请求的处理

[复制链接]

11

主题

19

帖子

80

积分

注册会员

Rank: 2

积分
80
QQ
发表于 2020-6-3 17:37:54 | 显示全部楼层 |阅读模式

Python爬虫Ajax动态加载知识点讲解,Ajax动态加载从网页的url加载网页的源代码之后,会在浏览器里执行JavaScript程序。这些程序会加载出更多的内容,并把这些内容传输到网页中
动态加载页面信息的提取
当我们浏览一个新闻类的网站,例如微博,搜狐,今日头条等,因为这些网站的内容很多,所以当我们搜索某一关键词的信息后,服务器只会向我们返回少量的数据,微博和头条是返回指定数量的数据,当我们再次向下刷新的时候,会再次通过Ajax请求返回指定数目的数据(如果你的网络不好时,会出现一个表示正在加载的小圆圈的动画效果)。知乎是当浏览器的滚动条触底时,再次提取数据。这就产生了一个问题,通过爬虫如何来提取通过Ajax请求动态加载的数据呢?
它的工作原理是:从网页的url加载网页的源代码之后,会在浏览器里执行JavaScript程序。这些程序会加载更多的内容,“填充”到网页里。这就是为什么如果你直接去爬网页本身的url,你会找不到页面的实际内容。
这里,若使用Google Chrome分析”请求“对应的链接(方法:右键→审查元素→Network→清空,点击”加载更多“,出现对应的GET链接寻找Type为text/html的,点击,查看get参数或者复制Request URL),循环过程。

  • 如果“请求”之前有页面,依据上一步的网址进行分析推导第1页。以此类推,抓取抓Ajax地址的数据。
  • 对返回的json格式数据(str)进行正则匹配。json格式数据中,需从'\uxxxx'形式的unicode_escape编码转换成u'\uxxxx'的unicode编码。
爬取有两个需要注意的问题:
  • 如何处理js生成的cookie
可以使用无头浏览器获取大量cookie,存储后备用。
  • 如何控制频率和利用代理破除反爬限制





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|mysql5.com Inc. ( 闽ICP备17002856号-1 )

GMT+8, 2020-7-7 04:51 , Processed in 0.044168 second(s), 19 queries .

Powered by MySQL5.com X3.4

© 2003-2019 MySQL5.com.

快速回复 返回顶部 返回列表