0

我试图让 python 在 Ballotpedia 上给我来自阿拉巴马州的州参议员的名字。但是,我放在一起的代码只是给了我从 url 请求的标题,但我没有得到任何名称。这是我当前的python代码:

import requests
from bs4 import BeautifulSoup
import pandas as pd

list = ['https://ballotpedia.org/Alabama_State_Senate']

temp_dict = {}

for page in list:
    r = requests.get(page)
    soup = BeautifulSoup(r.content, 'html.parser')

    temp_dict[page.split('/')[-1]] = [item.text for item in 
soup.select("table.bptable gray sortable tablesorter 
jquery-tablesorter a")]

df = pd.DataFrame.from_dict(temp_dict, 
orient='index').transpose()

我相信我的错误在这一行:

    temp_dict[page.split('/')[-1]] = [item.text for item in soup.select("table.bptable gray sortable tablesorter jquery-tablesorter a")]

谢谢你。

4

2 回答 2

2

这似乎对我有用:

import requests
from bs4 import BeautifulSoup

url = "https://ballotpedia.org/Alabama_State_Senate"

response = requests.get(url)
response.raise_for_status()

soup = BeautifulSoup(response.content, "html.parser")

for row in soup.find(id="officeholder-table").select("tr:not([colspan])"):
    name = row.select_one("td:nth-of-type(2)").text
    print(name)
于 2020-03-27T21:09:26.037 回答
0

获取所有信息的另一种方法:

holders = soup.select("#officeholder-table")
targets = holders[0].select('tr')
for target in targets:
    print(target.text)

输出:

Alabama State Senate District 20
Linda Coleman-Madison
Democratic 
2006

等等

于 2020-03-27T21:56:35.370 回答