【发布时间】:2023-03-27 00:49:01
【问题描述】:
我对 python 很陌生(三天),我偶然发现了一个我无法用 google/youtube 解决的问题。我想从National Governors Association 获取所有美国州长的背景数据,并将其保存到 csv 文件中。
我已经设法抓取了所有调控器的列表,但要获得更多详细信息,我需要单独进入每个调控器的页面并保存数据。我在网上找到了代码建议,它利用“下一步”按钮或 url 结构来遍历多个站点。但是,该网站没有下一步按钮,并且 url 链接不遵循可循环的结构。所以我被困住了。
如果我能得到任何帮助,我将不胜感激。我想提取每个州长页面中主要文本(“地址”标签中的办公日期、学校等)上方的信息,例如this one。
这是我目前得到的:
import bs4 as bs
import urllib.request
import pandas as pd
url = 'https://www.nga.org/cms/FormerGovBios?begincac77e09-db17-41cb-9de0-687b843338d0=10&endcac77e09-db17-41cb-9de0-687b843338d0=9999&pagesizecac77e09-db17-41cb-9de0-687b843338d0=10&militaryService=&higherOfficesServed=&religion=&lastName=&sex=Any&honors=&submit=Search&college=&firstName=&party=&inOffice=Any&biography=&warsServed=&'
sauce = urllib.request.urlopen(url).read()
soup = bs.BeautifulSoup(sauce, "html.parser")
#dl list of all govs
dfs = pd.read_html(url, header=0)
for df in dfs:
df.to_csv('governors.csv')
#dl links to each gov
table = soup.find('table', 'table table-striped table-striped')
links = table.findAll('a')
with open ('governors_links.csv', 'w') as r:
for link in links:
r.write(link['href'])
r.write('\n')
r.close()
#enter each gov page and extract data in the "address" tag(s)
#save this in a csv file
【问题讨论】:
-
“url 链接不遵循可循环结构”是什么意思?您正在提取 href 网址——您只需要遍历网址并使用 BeautifulSoup 从每个网址中抓取您需要的结构化数据。
-
试试这个网址。它会让你获取所有数据。我刚刚从网址中踢出了下一页的部分。试试看:
https://www.nga.org/cms/FormerGovBios?begincac77e09-db17-41cb-9de0-687b843338d0&endcac77e09-db17-41cb-9de0-687b843338d0=319&pagesizecac77e09-db17-41cb-9de0-687b843338d0=10&college=&lastName=&submit=Search&inOffice=Any&sex=Any&militaryService=&biography=&warsServed=&higherOfficesServed=&honors=&religion=&firstName=&party=&
标签: python pandas web-scraping beautifulsoup