#python #numpy #beautifulsoup #html-table #wikipedia-api
#python #numpy #beautifulsoup #html-таблица #википедия-api
Вопрос:
Я пытаюсь очистить таблицу Википедии, используя Python и Beautiful Soup. Когда я пытаюсь получить атрибуты столбцов таблицы с помощью цикла for, я получаю сообщение об ошибке:
NameError Traceback (most recent call last)
<ipython-input-18-948408e65d8d> in <module>
1 # Header attributes of the table
2 header=[th.text.rstrip()
----> 3 for th in rows[0].find_all('th')]
4 print(header)
5 print('------------')
NameError: name 'rows' is not defined
Как я могу это исправить?
Код:
url=»https://en.wikipedia.org/wiki/List_of_municipalities_of_Norway «
Инициирование нескольких запросов URL. Если запрос выполнен успешно, то ожидаемый код состояния HTTP-ответа равен 200.
s=requests.Session()
response=s.get(url, timeout=10)
response
res = requests.get(url)
soup = BeautifulSoup(res.content, 'html.parser')
Название страницы Википедии
soup.title.string
Найдите нужную таблицу для очистки
right_table=soup.find('table',{"class":'sortable wikitable'})
Атрибуты заголовка таблицы
header=[th.text.rstrip()
for th in rows[0].find_all('th')]
print(header)
print('------------')
print(len(header))
Комментарии:
1. Откуда берутся строки?
2. Из right_table=soup.find(‘table’,{«class»:’сортируемый wikitable’}). Это позволяет найти таблицу с HTML-тегом «сортируемый wikitable» с веб-страницы Википедии. Должен ли я установить rows=[] перед вызовом его в функции find_all?
3. ДА. Только когда вы инициализируете список, вы можете добавлять к нему значения.
Ответ №1:
Вы можете использовать pandas
, что будет очень просто в вашем случае:
import pandas as pd
tables = pd.read_html("https://en.wikipedia.org/wiki/List_of_municipalities_of_Norway")
right_table = tables[1]
Вывод
| | Number[1](ISO 3166-2:NO) | Name | Adm. center | County | Population(2017)[2] | Area(km²)[3] | CountyMap | Arms | Language form[4] | Mayor[5] | Party |
|----:|---------------------------:|:-----------------------------|:---------------------|:---------------------|----------------------:|---------------:|------------:|-------:|:-------------------------|:----------------------------|:--------|
| 0 | 301 | Oslo | Oslo | Oslo | 673469 | 454.03 | nan | nan | Neutral | Marianne Borgen | SV |
| 1 | 1101 | Eigersund | Egersund | Rogaland | 14898 | 431.66 | nan | nan | Bokmål | Leif Erik Egaas | H |
| 2 | 1103 | Stavanger | Stavanger | Rogaland | 141186 | 262.52 | nan | nan | Bokmål | Kari Nessa Nordtun | Ap |
| 3 | 1106 | Haugesund | Haugesund | Rogaland |