Мне нужно очистить сайт с помощью python. Я получаю исходный html-код с модулем urlib, но мне нужно также очистить некоторый код html, который генерируется функцией javascript (которая включена в источник html). То, что выполняет эта функция на "сайте", заключается в том, что при нажатии кнопки выводится некоторый код html. Как я могу нажать эту кнопку с помощью кода python? Может ли мне помогать? Я захватил POST-запрос с помощью firebug, но когда я пытаюсь передать его по URL-адресу, я получаю ошибку 403. Любые предложения?
Scrape html, сгенерированный javascript с помощью python
Ответ 1
В Python, я думаю, Selenium 1.0 - это путь. Его библиотека, которая позволяет вам управлять реальным веб-браузером с вашего языка выбора.
У вас должен быть установлен веб-браузер на компьютере, на котором работает script, но он выглядит как самый надежный способ программного опроса веб-сайтов, которые используют много JavaScript.
Ответ 2
Поскольку здесь нет исчерпывающего ответа, я продолжу и напишу.
Чтобы очистить страницы, обработанные JS, нам понадобится браузер с механизмом JavaScript (e.i, поддержка рендеринга JavaScript)
Параметры вроде Mechanize, url2lib не будут работать, так как они НЕ поддерживают JavaScript.
Итак, что вы делаете:
Настройка PhantomJS для запуска с Selenium. После установки зависимостей для них обоих (см. this), вы можете использовать следующий код в качестве примера для получения полностью рендерингового веб-сайта.
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get('http://jokes.cc.com/')
soupFromJokesCC = BeautifulSoup(driver.page_source) #page_source fetches page after rendering is complete
driver.save_screenshot('screen.png') # save a screenshot to disk
driver.quit()
Ответ 3
Я должен был сделать это раньше (в .NET), и вам в основном нужно будет разместить браузер, заставить его нажать кнопку, а затем допросить DOM (модель объекта документа) браузера, чтобы получить сгенерированный HTML.
Это определенно один из недостатков веб-приложений, продвигающихся к подходу Ajax/Javascript к созданию клиентской стороны HTML.
Ответ 4
Я использую webkit, который является браузером для Chrome и Safari. Есть привязки Python к webkit через Qt. И вот полный пример для выполнения JavaScript и извлечения окончательного HTML.
Ответ 5
Для Scrapy (отличная фреймворк python) есть scrapyjs: дополнительный обработчик обработчика/промежуточного обработчика, способный очищать содержимое, сгенерированное javascript.
Он основан на движке webkit на pygtk, python-webkit и python-jswebkit, и это довольно просто.