抓取动态网页(Java高并发编程入门为啥写这篇文章?(09))
优采云 发布时间: 2022-01-01 07:10抓取动态网页(Java高并发编程入门为啥写这篇文章?(09))
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连。
1. 社区里走一走,每周都有福利,每周都有惊喜。马农飞阁社区飞跃计划
2. Python基础专栏,基础知识一应俱全。 Python从入门到精通
❤️ 3. Ceph实战,从原理到实战,无所不包。 Ceph实战
❤️ 4. Java高并发编程介绍,点进来学习Java高并发。 Java高并发编程简介
为什么要写这个文章?
前两篇文章我们分别介绍了
使用正则表达式爬取古诗词散文网站,玩玩学习【python爬虫入门进阶】(09)
使用生产者-消费者模式抓取bucket图片,一下子获取大量表情【python爬虫入门进阶】(11)
还没来得及看的朋友可以再看一波。
本文以小凡表网站为例介绍如何从动态网页中抓取数据。上面说的数据爬取是为了说明哪些是静态网页,即接口直接返回一个Html页面。我们只需要通过Xpath等方式提取页面内容即可。
今天要讲的另一种网站就是页面数据通过ajax返回。对于这种网站,我们如何抓取他的数据?
为什么要写这个文章?分析页面 ajax获取ajax数据的方法是什么 获取数据汇总分析页面
首先打开这个网站,经过简单的分析,我们可以得出三个结论。
点击查看更多数据后,页面地址不变,页面不会刷新。单击以查看更多一次将请求该接口一次。页面的数据以application/json的形式由接口返回。 p 参数控制返回哪一页数据。 n 参数控制每页返回的数据项数。什么是ajax
AJAX(Asynchronouse JavaScript And XML)中文称为异步JavaScript和XML。主要用于前端和服务器端进行少量数据交互。 Ajax 可以实现网页的异步加载,这意味着可以在不重新加载整个网页的情况下部分更新网页的某个部分。传统网页(不使用 Ajax)如果需要更新内容,需要重新加载整个网页。
因为传统的数据传输格式是XML语法,所以叫做AJAX。其实现在数据交互基本都是用JSON。使用ajax加载的数据,即使使用js,数据渲染到浏览器中,右键---->查看网页源码,仍然看不到通过ajax加载的数据,只加载了html使用网址代码。
如何获取ajax数据直接分析ajax调用的接口,然后通过代码请求这个接口。使用Selenium+chromedriver模拟浏览器行为获取数据。 (文章后面会详细介绍)获取数据
这个小餐桌网站的界面比较简单。没有加密认证什么的,直接通过requests请求即可。这是一个示例代码:
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36"
}
requests.packages.urllib3.disable_warnings()
if __name__ == '__main__':
for i in range(1,10):
url = "https://www.xfz.cn/api/website/articles/?p={0}&n=20&type=".format(str(i))
resp = requests.get(url, headers=headers, verify=False)
print(resp.json())
运行结果:
总结
本文以小凡表网站为例,简单介绍一下如何抓取动态网页的数据。