Очистка Википедии — нужна помощь для ее структурирования

#python #pandas #python-2.7 #beautifulsoup #wikipedia

#python #pandas #python-2.7 #beautifulsoup #википедия

Вопрос:

Я пытаюсь очистить эту страницу Википедии.

Я сталкиваюсь с некоторыми проблемами и был бы признателен за вашу помощь:

  1. Некоторые строки содержат более одного имени или ссылки, и я хочу, чтобы все они были отнесены к правильной стране. Могу ли я это сделать в любом случае?

  2. Я хочу пропустить столбец ‘Name (native)’. Как я могу это сделать?

  3. Если я очищаю столбец ‘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