网页抓取数据(不使用selenium插件模拟浏览器如何获得网页上的动态加载数据)
优采云 发布时间: 2022-01-01 02:18网页抓取数据(不使用selenium插件模拟浏览器如何获得网页上的动态加载数据)
如何在不使用selenium插件的情况下抓取网页的动态加载数据。针对这个问题,本文文章详细介绍了相应的分析和解答,希望能帮助更多想要解决这个问题的朋友找到更简单易行的方法。
下面介绍如何在不使用selenium插件模拟浏览器的情况下获取网页的动态加载数据。
步骤如下:
一、找到正确的网址。
二、填写URL对应的参数。
三、 参数转换成urllib可以识别的字符串数据。
四、 初始化请求对象。
五、urlopen 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)