python抓取动态网页( 为啥写这篇文章?前两篇文章我们分别介绍了文章目录分析页面)
优采云 发布时间: 2022-04-09 05:26python抓取动态网页(
为啥写这篇文章?前两篇文章我们分别介绍了文章目录分析页面)
为什么要写这个文章?
前两篇文章我们分别介绍
文章目录
分析页面
先打开小餐桌网站,经过简单分析我们可以得出三个结论。
点击查看更多数据后,页面地址不变,不会再次刷新页面。点击查看更多将请求界面一次。页面的数据由接口以application/json的形式返回。返回哪个页面的数据由p参数控制。n 参数控制每页返回的数据项数。什么是ajax
AJAX(Asynchronouse JavaScript And XML)中文名称是异步JavaScript和XML。主要用于前端与服务器之间的少量数据交互。Ajax 允许异步加载网页,这意味着可以对网页的某些部分进行部分更新,而无需重新加载整个网页。如果内容需要更新,传统网页(不使用 Ajax)需要重新加载整个网页。
因为传统的数据传输格式使用XML语法,所以称为AJAX。其实数据交互基本都是用JSON。AJAX加载的数据,即使使用JS,数据渲染到浏览器中,右键---->查看网页源代码,还是看不到ajax加载的数据,你只能看到url代码加载的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())
运行结果:
总结
本文以小餐桌网站为例,简单介绍如何从动态网页中抓取数据。
粉丝专属福利
软考资料:实用软考资料
面试题:5G Java高频面试题
学习资料:各种学习资料50G