Как разобрать конкретную вики-страницу и автоматизировать это? - PullRequest
2 голосов
/ 13 апреля 2011

Я пытаюсь создать веб-приложение, которое должно анализировать одну конкретную страницу википедии и извлекать некоторую информацию, которая хранится в табличном формате на странице. Затем извлеченные данные должны быть сохранены в базе данных.

Я не делал ничего подобного раньше. Какой язык сценариев я должен использовать для этого? Я немного читал и похоже, что Python (использующий urllib2 и BeautifulSoup) должен справиться с этой задачей, но является ли это лучшим способом решения проблемы.

Я знаю, что мог бы также использовать API WikiMedia, но является ли использование Python хорошей идеей для общих проблем с синтаксическим анализом?

Также табличные данные на странице википедии могут меняться, поэтому мне нужно анализировать каждый день. Как мне автоматизировать скрипт для этого? Также есть идеи по управлению версиями без внешних инструментов, таких как svn, чтобы можно было легко отменить обновления в случае необходимости?

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Какой язык сценариев мне следует использовать для этого?

Python подойдет, поскольку вы отметили свой вопрос.

выглядит так, как будто Python (с использованием urllib2 и BeautifulSoup) должен выполнять свою работу, но это лучший способподхода к проблеме.

Это выполнимо.Я бы использовал lxml.etree лично.Альтернативой является выборка страницы в необработанном формате, тогда у вас есть другая задача синтаксического анализа.

Я знаю, что мог бы также использовать API WikiMedia, но является ли использование Python хорошей идеей для общих проблем синтаксического анализа?1015 *

Это, кажется, утверждение и несвязанный спорный вопрос.Субъективно, если бы я подходил к задаче, о которой вы спрашиваете, я бы использовал python.

Также табличные данные на странице википедии могут меняться, поэтому мне нужно анализировать каждый день.Как мне автоматизировать сценарий для этого?

Задание Unix cron.

Также любые идеи для управления версиями без внешних инструментов, таких как svn, чтобы обновления можно было легко отменить, еслинужно быть?

Репозиторий Subversion может быть запущен на той же машине, что и скрипт, который вы написали.В качестве альтернативы вы можете использовать распределенную систему контроля версий, например, git.


Любопытно, что вы не упомянули, что вы планируете делать с этими данными.

0 голосов
/ 14 апреля 2011

да Python является отличным выбором для очистки веб-страниц.

Википедия часто обновляет контент, но структура редко.Если в таблице есть что-то уникальное, например, идентификатор, вы можете извлечь данные более уверенно.

Вот простой пример очистки википедии с использованием этой библиотеки :

from webscraping import common, download, xpath
html = download.Download().fetch('http://en.wikipedia.org/wiki/Stackoverflow')
attributes = {}
for tr in xpath.search(html, '//table//tr'):
    th = xpath.get(tr, '/th')
    if th:
        td = xpath.get(tr, '/td')
        attributes[common.clean(th)] = common.clean(td)
print attributes

А вот и вывод:

{'Commercial?': 'Yes', 'Available language(s)': 'English', 'URL': 'stackoverflow.com', 'Current status': 'Online', 'Created by': 'Joel Spolsky and Jeff Atwood', 'Registration': 'Optional; Uses OpenID', 'Owner': 'Stack Exchange, Inc.', 'Alexa rank': '160[1]', 'Type of site': 'Question & Answer', 'Launched': 'August 2008'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...