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找元素

 

 點進去一個鏈接

 

看對應的源代碼,注意到沒有,網站表格基本都是這個結構,tr是表格的行,table row

 

 這里本可以繼續用find函數找標簽,然后輸出

為了使代碼簡潔一點,采用pandas庫的read_html函數,直接讀取表格。

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

聲明:以上操作僅用於學習和研究。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM