python抓取网页数据(如何用python来抓取页面中的动态动态网页数据? )

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

  python抓取网页数据(如何用python来抓取页面中的动态动态网页数据?

)

  "

  浏览器中显示的内容与右键查看的网页源代码是否不同?

  右键-查看源代码

  生成的 HTML 不收录由 ajax 异步加载的内容

  查看原文件只显示网页的初始状态,但实际上网页加载后可能会立即执行js来改变初始状态。当前网页不同于传统的动态网页。它可以在不刷新网页的情况下更改网页的本地数据。这一切都是通过js和服务端的交互来完成的。这就像一个程序使用对话框编辑器来设计一个界面,但在实际操作中,你需要在其中加载数据,改变控件的状态,甚至创建新的控件,销毁控件,或者隐藏现有的控件。外观自然会有所不同。

  "

  我们经常会发现网页中的很多数据并不是用 HTML 编写的,而是通过 js 动态加载的。因此,引入了动态数据的概念。这里的动态数据是指网页中通过Javascript动态生成的页面内容。它是在页面加载到浏览器后动态生成的,但之前没有。

  在编写爬虫爬取网页数据的时候,经常会遇到这种需要动态加载数据的HTML网页。如果还是直接从网页爬取,就无法获取任何数据。

  今天就简单讲一下如何使用python爬取页面中JS动态加载的数据。

  给定一个网页:豆瓣电影排行榜,里面的所有电影信息都是动态加载的。我们无法直接从页面获取有关每部电影的信息。

  如下图所示,我们在 HTML 中找不到对应的电影信息。

  

  

  在Chrome浏览器中,点击F12打开网络中的XHR,我们抓取对应的js文件进行解析。如下所示:

  

  在豆瓣页面上拖拽,让页面加载更多的电影信息,方便我们抓取对应的消息。

  我们可以看到它使用了 AJAX 异步请求。AJAX 可以通过在后台与服务器交换少量数据来异步更新网页。因此,可以在不重新加载整个网页的情况下更新网页的一部分,从而实现数据的动态加载。

  我们可以看到,通过 GET,我们得到的响应中收录了对应的电影相关信息,并以 JSON 格式保存在一起。

  

  查看RequestURL信息,我们可以看到action参数后面有两个参数“start”和“limit”,很明显的意思是:“从某个位置返回的电影数量”。

  如果想快速获取相关电影信息,可以直接将网址复制到地址栏,修改自己需要的start和limit参数值,抓取对应的结果。

  但这看起来很不自动化,网站的其他很多RequestURL也没有那么直接,所以我们会使用python进行进一步的操作来获取返回的消息信息。

  

  #coding:utf-8

import urllib

import requests

post_param = {'action':'','start':'0','limit':'1'}

return_data = requests.get("https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90",data =post_param, verify = False)

print return_data.text

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线