#python #pandas #python-2.7 #beautifulsoup #wikipedia
#python #pandas #python-2.7 #beautifulsoup #википедия
Вопрос:
Я пытаюсь очистить эту страницу Википедии.
Я сталкиваюсь с некоторыми проблемами и был бы признателен за вашу помощь:
Некоторые строки содержат более одного имени или ссылки, и я хочу, чтобы все они были отнесены к правильной стране. Могу ли я это сделать в любом случае?
Я хочу пропустить столбец ‘Name (native)’. Как я могу это сделать?
Если я очищаю столбец ‘Name (native)’. Я получаю какую-то тарабарщину, есть ли способ ее кодирования?
import requests
from bs4 import BeautifulSoup
import csv
import pandas as pd
url = 'https://en.wikipedia.org/wiki/List_of_government_gazettes'
source = requests.get(url).text
soup = BeautifulSoup(source, 'lxml')
table = soup.find('table', class_='wikitable').tbody
rows = table.findAll('tr')
columns = [col.text.encode('utf').replace('xc2xa0','').replace('n', '') for col in rows[1].find_all('td')]
print(columns)
Ответ №1:
Вы можете использовать функцию pandas read_html
и получить вторую DataFrame
из списка DataFrames
:
url = 'https://en.wikipedia.org/wiki/List_of_government_gazettes'
df = pd.read_html(url)[1].head()
print (df)
Country/region Name
0 Albania Official Gazette of the Republic of Albania
1 Algeria Official Gazette
2 Andorra Official Bulletin of the Principality of Andorra
3 Antigua and Barbuda Antigua and Barbuda Official Gazette
4 Argentina Official Gazette of the Republic of Argentina
Name (native) Website
0 Fletorja Zyrtare E Republikës Së Shqipërisë qbz.gov.al
1 Journal Officiel d'Algérie joradp.dz/HAR
2 Butlletí Oficial del Principat d'Andorra www.bopa.ad
3 Antigua and Barbuda Official Gazette www.legalaffairs.gov.ag
4 Boletín Oficial de la República Argentina www.boletinoficial.gob.ar
Если проверить вывод, там проблемная строка 26
, потому что неправильные данные также на странице wiki.
Решением должно быть заданное значение по имени столбца и строке:
df.loc[26, 'Name (native)'] = np.nan
Комментарии:
1. так что это намного проще, чем я, хотя, большое вам спасибо! направляюсь изучать Pandas и как преобразовать эту таблицу в csv. еще раз спасибо @jezrael