簡體   English   中英

使用漂亮的湯和python抓取和解析數據表

[英]Scraping and parsing data table using beautiful soup and python

大家好,我想從中央情報局網站抓取一張表格,該表格根據未鋪設和已鋪設的道路顯示不同國家的道路數據。 我寫了這個腳本來提取。 其次,我試圖將第二列中的信息解析為單獨的字段,但是我不知道該怎么做。 之后,我想將每個列和數據的標題保存到CSV文件中。

這是我的代碼:

import csv
import requests 
from bs4 import BeautifulSoup

course_list = []
url = "https://www.cia.gov/library/publications/the-world-factbook/fields/print_2085.html"
r = requests.get(url)
soup=BeautifulSoup(r.content)


for tr in soup.find_all('tr')[1:]:
          tds=tr.find_all('td')
          print (tds[1].text)

第二專欄包含三部分信息,我想解析該怎么做?

謝謝!

根據要實現提取的方式,可以執行以下操作:

roadways = tds[1].text.strip().split('\n')

這會從第二列的內容的開頭和結尾刪除一些空間,並用換行符分隔。 結果將是這樣的列表:

['total: 97,267 km', 'paved: 18,481 km', 'unpaved: 78,786 km (2002)']

在這里,您可以從內容中刪除total標簽或paved的標簽:

roadways = [x[x.index(':')+1:].strip() for x in tds[1].text.strip().split('\n')]

這將導致以下列表:

['97,267 km', '18,481 km', '78,786 km (2002)']

這可以存儲在CSV文件中:

export_file = open(..., 'w')
wr = csv.writer(export_file, quoting=csv.QUOTE_ALL)
wr.writerow(['total','paved','unpaved'])

這適用於您提取的每一行:

wr.writerow(roadways)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM