Python веб-бот - PullRequest
       7

Python веб-бот

3 голосов
/ 24 июня 2009

Я пытаюсь написать веб-бот на основе Python, который может читать и интерпретировать HTML-страницу, затем выполнять функцию onClick и получать полученную новую HTML-страницу. Я уже могу прочитать страницу HTML и определить функции, которые будут вызываться командой onClick, но я не знаю, как выполнить эти функции или как получить полученный HTML-код.

Есть идеи?

Ответы [ 7 ]

5 голосов
/ 24 июня 2009

Единственный инструмент в Python для Javascript, о котором я знаю, это python-spidermonkey . Я никогда не использовал это все же.

С Jython вы можете (ab-) использовать HttpUnit .

Редактировать : забыл, что вы можете использовать Scrapy . Он поддерживает Javascript через Spidermonkey, и вы даже можете использовать Firefox для сканирования в Интернете.

Редактировать 2 : В последнее время я все больше и больше использую автоматизацию браузера для таких задач благодаря некоторым превосходным библиотекам. QtWebKit предлагает полный доступ к браузеру WebKit, который можно использовать в Python благодаря привязкам к языку ( PySide или PyQt ). Кажется, есть похожие библиотеки и привязки для Gtk +, которые я не пробовал. Selenium WebDriver API также отлично работает и имеет активное сообщество.

0 голосов
/ 20 июля 2018

Для веб-автоматизации вы можете заглянуть в библиотеку " webbot ". Это делает автоматизацию чертовски простой и безболезненной.

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

Вот фрагмент веб-бота

from webbot import Browser 
web = Browser()
web.go_to('google.com') 
web.click('Sign in')
web.type('mymail@gmail.com' , into='Email')
web.click('NEXT' , tag='span')
web.type('mypassword' , into='Password' , id='passwordFieldId') # specific selection
web.click('NEXT' , tag='span') # you are logged in ^_^

Документы находятся по адресу: https://webbot.readthedocs.io

0 голосов
/ 03 мая 2011

Почему бы вам просто не понюхать то, что отправлено после события onclick, и повторить это с вашим ботом?

0 голосов
/ 24 июня 2009

Для части браузера вы можете захотеть взглянуть на Mechanize, который в основном представляет собой веб-браузер, реализованный в виде библиотеки Python. http://pypi.python.org/pypi/mechanize/0.1.11 Но, как уже упоминалось, текст nClick - это Javascript, и для этого вам понадобится spidermonkey.

Если вы можете сделать общую поддержку для spidermonkey в механизации, я уверен, что многие люди будут очень счастливы. ;)

Механизация может быть излишней, может быть, вы просто хотите найти определенные части HTML, а затем lxml и BeautifulSoup хорошо работают.

0 голосов
/ 24 июня 2009

Вы можете попробовать кредитное плечо V8 ,

V8 - высокопроизводительный движок JavaScript с открытым исходным кодом от Google. Он написан на C ++ и используется в Google Chrome, браузере Google с открытым исходным кодом.

Вызов его из Python может быть не простым, без рамок для предоставления DOM. Pyjamas имеет экспериментальный проект, Pajamas Desktop , обеспечивающий интеграцию V8 для выполнения Javascript.

Pyv8 - это экспериментальные привязки python v8 и компилятор python-javascript.

0 голосов
/ 24 июня 2009

Чтобы выполнить JavaScript, вам нужно сделать многое из того, что делает полноценный веб-браузер, за исключением рендеринга. В частности, вам нужен интерпретатор JavaScript, в дополнение к интерпретатору Python.

Одна отправная точка может быть python-spidermonkey . В зависимости от конкретного JavaScript, вам может потребоваться предоставить хороший API-интерфейс DOM для spidermonkey в дополнение к реализации XmlHttpRequest.

0 голосов
/ 24 июня 2009

Ну, очевидно, python не будет интерпретировать JS для вас (хотя могут быть модули, которые могут). Я полагаю, вам нужно преобразовать инструкции JS в эквивалентные преобразования в Python.

Полагаю, что ElementTree или BeautifulSoup были бы хорошей отправной точкой для интерпретации структуры HTML.

...