java爬虫抓取动态网页(本文插件模拟浏览器如何获得网页上的动态加载数据?)
优采云 发布时间: 2021-09-14 05:02java爬虫抓取动态网页(本文插件模拟浏览器如何获得网页上的动态加载数据?)
本文讲如何在不使用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)