Python: Очистите все имена должностных лиц в таблицах, на которые есть ссылки в списке URL-адресов. - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь заставить python сообщить мне имена сенаторов и представителей штата в Ballotpedia. Тем не менее, код, который я собрал, дает мне только заголовок, который я запросил по URL, но я не получаю никаких имен. Вот мой текущий python код:

import requests
from bs4 import BeautifulSoup
import pandas as pd

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

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")]

Спасибо.

1 Ответ

0 голосов
/ 31 марта 2020

Индекс обеих таблиц одинаков для всех страниц. Просто используйте pandas read_ html, чтобы получить таблицы и объединить все результаты: -

import pandas as pd

urls = ['https://ballotpedia.org/Alabama_State_Senate', 'https://ballotpedia.org/Alabama_House_of_Representatives']

appended_data = []

for page in urls:
    df = pd.read_html(page)[3]
    appended_data.append(df)

appended_data = pd.concat(appended_data)
...