Как получить списки Википедии из Python? - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь написать программу, которая получает список песен из данного альбома или саундтрека.Я пытался сделать это с помощью Википедии, и я нашел 2 модуля, которые должны выполнять эту работу: wikipedia и wikipedia-api .К сожалению, ни один из них не получает элемент статьи, который я ищу, вместо этого просто пропустить его.Это действительно бесполезно для меня, очевидно.Итак, что я хочу знать: есть ли модуль, который будет получать списки из статьи Википедии?Или я должен использовать оригинальные API Википедии и создать его сам?Я пытаюсь избежать получения необработанного HTML и разбора, потому что это будет сложно и, вероятно, не нужно.

Вот пример кода, который вы можете попробовать, он использует модуль wikipedia (pip install wikipedia), но ошибкато же самое для обоих модулей.

import wikipedia
article = wikipedia.search("civil war soundtrack")[0] # I've already checked this, the searching is definitely accurate and isn't the source of the problem
pg = wikipedia.page(article)
print(pg.text)

Когда он печатает текст, вместо печати таблицы в разделе «Список треков», он печатает строку о композиторе и полностью пропускает список.

Заранее спасибо!

Примечание: если я не отвечаю сразу, это потому, что я сплю, уже поздно, поэтому я проверю все утром

Примечание2: Если я делаю что-то не так с точки зрения того, как я задаю вопрос, обратная связь приветствуется!В прошлом за мои вопросы отказывали, и причины продолжают ускользать от меня.

1 Ответ

0 голосов
/ 13 июня 2018

Я пробовал следующие библиотеки, и ни одна из них не поддерживает извлечение таблиц:

  • wikipedia
  • wikipedia-api
  • MediaWikiAPI

У людей была та же проблема, что и у вас, и один парень предложил возможное решение вашей проблемы с помощью MediaWikiAPI и Beautiful soup:

# load page 
mediawikiapi = MediaWikiAPI()
test_page = mediawikiapi.page(PageWithTables)

# scrape the HTML with BeautifulSoup to find tables
soup = BeautifulSoup(test_page.html(), 'html.parser')
tables = soup.findAll("table", { "class" : "wikitable" })

# select target table and apply custom function to export it to pandas
target_table = tables[0]
df_test = wikitable_to_dataframe(target_table)

Источник: https://github.com/goldsmith/Wikipedia/issues/111

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...