使用beautifulsoup和python抓取和解析数据表

2024-09-29 22:32:32 发布

您现在位置: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)

第二篇专栏文章有三部分信息,我想解析出我该怎么做?在

谢谢!在


Tags: 数据import信息url网站allfindrequests
1条回答
网友
1楼 · 发布于 2024-09-29 22:32:32

根据您希望实现提取的方式,可以执行以下操作:

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

这将从第二列内容的开始和结束处删除一些空格,并用换行符将其拆分。结果将是这样一个列表:

^{pr2}$

从这里可以从内容中删除total或{}等标签:

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)

相关问题 更多 >

    热门问题