大家好,所以我试图从中央情报局网站上搜集表格,根据未铺砌和铺砌的道路显示不同国家道路上的数据。我写了这个脚本来提取。其次,我试图将第二列中的信息解析为单独的字段,但我不知道该怎么做。之后,我想保存到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)
第二栏有三部分信息,我想解析我该怎么做?
谢谢!
答案 0 :(得分:0)
根据您希望如何实现提取,您可以执行以下操作:
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)