抓取动态网页(不使用selenium插件模拟浏览器如何获得网页上的动态加载数据)

优采云 发布时间: 2021-12-22 18:22

  抓取动态网页(不使用selenium插件模拟浏览器如何获得网页上的动态加载数据)

  如何在不使用selenium插件的情况下捕获网页的动态加载数据。针对这个问题,本文文章详细介绍了相应的分析和解答,希望能帮助更多想要解决这个问题的朋友找到更简单更简单的OK方法。

  下面是如何在不使用selenium插件模拟浏览器的情况下获取网页的动态加载数据。

  进行如下操作:

  一、找到正确的网址。

  二、填写URL对应的参数。

  三、 参数转换成urllib可以识别的字符串数据。

  四、 初始化请求对象。

  五、url打开Request对象获取数据。

  url='http://www.*****.*****/*********'

formdata = {'year': year,

'month': month,

'day': day

}

data = urllib.urlencode(formdata)

request=urllib2.Request(url,data = data)  #如果URL不带参数就是request=urllib2.Request(url)

r = urllib2.urlopen(request)

html=r.read() # html就是你要的数据,可能是html格式,也可能是json,或去他格式

  下面的步骤都是一样的,关键是如何获取URL和参数。我们以新冠肺炎疫情统计网页为例(#/)。

  

  如果直接抓取浏览器的网址,会看到一个没有数据内容的html,只有标题、列名等,没有累计诊断、累计死亡等数据。 因为这个数据页面是动态加载的,而不是静态 html 页面。需要按照我上面写的步骤来获取数据,关键是获取URL和对应的参数formdata。下面我们来谈谈如何使用火狐浏览器获取这两个数据。

  右键单击肺炎页面,从出现的菜单中选择检查元素。

  

  单击上面带有红色箭头的网络选项,然后刷新页面。如下,

  

  这里会有大量的网络传输记录。观察最右侧红色框中的“尺寸”列。此列表示此 http 请求传输的数据量。一般动态加载的数据的数据量会比其他页面元素的传输大,为119kb。与其他按字节计算的数据相比,数据量很大。当然,网页的一些装饰图片也是非常大的。这个需要根据文件类型栏来区分。

  然后点击域名栏对应的行,如下

  

  可以在消息头中看到请求的url,这个就是url,点击参数可以看到url对应的参数

  

  你能看到网址的结尾吗?后面的参数已经写好了。

  如果我们使用带参数的 URL,那么

  request=urllib2.Request(url),不带数据参数。

  如果你使用 request=urllib2.Request(url,data = data)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线