2016-01-14 2 views
0

Мой друг хочет получить некоторые данные с определенных веб-страниц. Он хочет этого в XML, потому что он будет кормить их каким-то могучим приложением.«Datamining» с сайтов

Это не проблема, любой скриптовый язык может это сделать. Проблема заключается в том, что содержимое «скрыто» и может быть видно только при входе пользователя в систему. Это означает, что на любом языке, который я буду использовать, я должен найти способ имитации веб-браузера - для хранения файлов cookie (например, session id), потому что без него я не смогу получить данные из ограниченных разделов веб-сайта.

Я не хочу, чтобы я писал свой собственный «веб-браузер», но я не уверен, что он мне нужен. Также я думаю, для этого должна быть библиотека. Есть идеи?

Да, мы спросили их об API, дампах данных и т. Д. Они не хотят сотрудничать.

Спасибо за любые советы.

+1

Это, вероятно, будет лучше спросил на Software Recs. На самом деле, [кто-то задал аналогичный вопрос уже] (http://softwarerecs.s.stackexchange.com/questions/20082/python-library-for-complex-web-scraping) –

ответ

4

Попробуйте Scrapy http://scrapy.org/ рамки. Он поддерживает файлы cookie, перенаправление и почти все, что вы хотите поддержать для приятной активности сканирования. Кроме Javascript.

Если вам нужен Javascript, посмотрите на phantomjs http://phantomjs.org/.

Scrapy находится в Python, но для большинства языков есть эквивалентные библиотеки. Иди на охоту!

2

Я использую BeautifulSoup для разбора HTML, есть также Scrapy Попробуйте прибегая к помощи «веб crowling» или «веб выскабливание» и посмотреть, что подходит вам лучше всего.

1

Для удобства использования попробуйте Selenium.

Хотя он медленнее по сравнению с использованием браузеров без головы, хорошо, что вам не нужно использовать другие библиотеки, чтобы включить Javascript, так как ваш скрипт будет имитировать фактический просмотр веб-сайта человеком. Вы также можете визуально проверить поведение своего сценария, так как он открывает веб-сайт в вашем браузере.

Вы можете легко найти шаблонных коды и учебники об этом тоже :)

2

Если вам придется иметь дело с JavaScript в то время как веб-выскабливание, вы можете использовать Selenium (библиотека Python) + PhantomJS (веб-браузер без графического рендеринга на веб-странице). Это позволяет моделировать поведение пользователя на веб-сайте.

Но если единственное препятствие является обработкой входа в скрытую часть веб-сайте, вы можете попробовать использовать запросы питон библиотеки для отправки запроса POST с требуемыми данными заголовков (имя пользователя и пароль), получая печенье, а затем использовать GET запрос на очистку данных. Session() объект будет держать куки для Вас в этом случае:

import requests 

session = requests.Session() 

login_form_data = {'username': 'user', 'password': 'pass123'} 
req = session.post('http://anyweb.com/login.php', login_form_data) 
req = session.get('http://anyweb.com/anypage.php') 
response_data = req.text 
Смежные вопросы