Python读取网页表格数据

学会了从网格爬取数据,就可以告别从网站一页一页复制表格数据的时代了。

说个亲身经历的事:

以前我的本科毕业论文是关于“燃放烟花爆竹和空气质量”之间关系的,就要从环保局官网查资料。

一个省10个市,720天的数据,我就傻乎乎地,一页一页复制数据,然后还要手动清理数据。

幸好可以复制,要不然我都可能手抄,你信不信。

当时别说Python,R都不知道,甚至excel都跛脚。

结果,有同学帮老师做个实验,论文都快写好了,我还在处理数据。

也正是因为有了这个经历,促使了我毕业很多年以后,还想把爬取数据这样一件事做好。

同时,也希望能给后面学习的人一点启发。

…………………………………………以上为感慨,下面是正文………………………………………

 1 #request网站请求
 2 import urllib.request
 3 #BeautifulSoup获取网站源代码
 4 from bs4 import BeautifulSoup
 5 import pandas as pd
 6 import csv
 7 response=urllib.request.urlopen("https://sthjt.ah.gov.cn/public/column/21691?type=4&action=list&nav=&sub=&catId=32710201")
 8 #解析源代码
 9 soup = BeautifulSoup(response, "html.parser")
10 links = soup.find("div", {"id": {"xxgk_lmcon"}})
11 ss =links.find_all("a")
12 for a in ss:
13     link = a.get(href)
14     #read_html可以直接获取网站表格
15     tb = pd.read_html(link)[2]
16     #mode=‘a‘追加写入
17     tb.to_csv("C:\\Users\\RK-PC\\Desktop\\Crawldata.csv", mode=a)

为了看的更清楚一点,把我获取数据的网站截图搬上来。

F12找元素

Python读取网页表格数据

 

 点进去一个链接

Python读取网页表格数据

 

看对应的源代码,注意到没有,网站表格基本都是这个结构,tr是表格的行,table row

Python读取网页表格数据

 

 这里本可以继续用find函数找标签,然后输出

为了使代码简洁一点,采用pandas库的read_html函数,直接读取表格。

最后,把表格写入csv文件,注意要表明,mode=‘a’,不覆盖。

声明:以上操作仅用于学习和研究。

Python读取网页表格数据

上一篇:Java 练习题 5岁的狗按人的年龄计算的话,前两年每一年是人的 10.5岁,之后每一年 * 增加4岁。如果5岁的狗、相当于人的多少年龄 * 10.5 + 10.5 + 4 +4 +4=33岁


下一篇:Android TCP Socket通信客户端/服务器端Demo(附APP源码)