网页源代码抓取工具(动态网页的爬取方式和静态网页(组图))
优采云 发布时间: 2022-03-20 06:06网页源代码抓取工具(动态网页的爬取方式和静态网页(组图))
写在开头
鸽了很久,主要是最近几篇博客的阅读量实在是惨淡。最后几篇博客主要是关于笔记的内容。它们针对的是没有接触过这个领域的新手。它们似乎不是很受欢迎,或者它们可能写得不好(安静而有力)。经过几个月的积累和很多项目,是时候写点东西了!
如何从动态网页中获取数据?本博客将教您如何获取数据。
数据源
*nw*=1&*anw*=1
以上两个网站就是我们教学的数据源!但是,这两个 网站 有点不同。腾讯新闻的爬取难度为入门级,网易新闻的爬取难度为进阶版。
这次让我们从入门级开始。毕竟,我们必须先学会走路才能跑。
流程实现
找到要爬取的源网站后,首先要做的永远是分析网页的结构,这也是最复杂的一步,需要不断尝试积累经验。
一般爬虫教程都是在静态网页上做的,这次我们处理的是动态网页。动态网页的爬取方式与静态网页的爬取方式有很大不同。事不宜迟,让我们开始吧!
1.网页F12大法
分析一个网页,对于一个静态网页,看源码,如下图:
红色框标记了工件。只要你能看到前端网页上的元素,就可以利用这个神器,在源码中找到一个元素的位置,而不用像剥洋葱一样让你一层一层剥。它的心,估计你真的要哭了!
但是当我们看到页面底部的图表时,这个神器就不行了,因为前端图表已经跨入了另一个领域,那就是动态网页。例如下图
你去刚才的神器里找,会得到如下代码。图表信息这么多,为什么只有一行代码?
因为图表隐藏了一些东西,它是什么?没错,就是数据!这就是我们要和爬虫一起挖掘的宝藏!可明知有宝物,藏在何处?那我就教你动态网页的“寻龙”!
在F12页面找到Network接口,如下图:
为什么一个是空白的?因为此时网页已经渲染完毕,我们只需要点击F5刷新页面,捕捉页面渲染的过程即可。
好了,至此我们找到了宝藏,接下来就是挖三尺,挖出数据!
经过大量的搜索和逐个文件的点击,我们挖掘到了终极宝藏!
点击第一个文件,发现网页的网址是这样的。这个 URL 有 JQuery 参数,我们不能使用。我们需要删除以下参数。
让我们看一下数据格式。就是json数据格式,是一种很常见的动态网页数据格式,对阅读操作非常友好。有的朋友可能第一次看到这种格式的数据,那我们就用一些工具让数据看起来更好看吧!
工具网址
在线JSON解析
选中网页中的所有JSON数据,然后复制到工具网站中,发现格式变清晰了。
有的小伙伴可能对数据处理有一定的了解,会发现这其实是一个复合字典。
2.编码实现
前面解析了这么多网页。如果你耐心阅读,我希望你能从中有所收获。
成为 CV 战士是没有意义的。毕竟每次遇到不一样的事情,知道怎么解决问题然后用代码实现才是核心。
我们来实现一个爬取各种数据,并将csv文件保存到本地
1import requests
2import json
3import csv
4
5def china_total_data():
6 chinatotal_url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_other'
7 response = requests.get(chinatotal_url).json() # 发出请求并json化处理
8 # 将获取到的json格式的字符串类型数据转换为python支持的字典类型数据
9 data = json.loads(response['data'])
10 chinaDayList = data["chinaDayList"]
11 with open("病例.csv", "w+", newline="") as csv_file:
12 writer = csv.writer(csv_file)
13 header = ["date", "confirm", "suspect", "dead", "heal"] # 定义表头
14 writer.writerow(header)
15 for i in range(len(chinaDayList)):
16 data_row1 = [chinaDayList[i]["date"], chinaDayList[i]["confirm"], chinaDayList[i]["suspect"],
17 chinaDayList[i]["dead"], chinaDayList[i]["heal"]]
18 writer.writerow(data_row1)
19
20if __name__ == '__main__':
21 china_total_data()
22
23
这样数据就爬下来保存在本地,保存为csv文件,供后续读取处理。
总结
这一次,我简单地实现了一个数据爬取工作。代码就不给太多了,希望小伙伴们可以看看这个例子,做个推论。
对了,上面不是有网页新闻页面吗,仅供大家练习使用!说是进阶版当然有道理,就等你自己去探索!
以后有机会的话,关于爬取数据的处理和可视化的教程也会发表博客,敬请期待!
结语
如果这个文章教会了你一些知识,请点赞关注,让博主看到。说明中如有错误或遗漏,请在评论中指出或提问。,博主会第一时间更新和回复,谢谢!