BeautifulSoup и механизировать, чтобы получить результат вызова AJAX - PullRequest
4 голосов
/ 09 апреля 2010

Привет, я строю скребок с использованием Python 2.5 и BeautifulSoup, но я столкнулся с проблемой ... Часть веб-страницы генерируется после нажатия пользователем какой-либо кнопки, что запускает запрос AJAX, вызывая определенную функцию javacsript с соответствующими параметрами

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

Буду признателен за любые ссылки или примеры кода, спасибо

Ответы [ 2 ]

6 голосов
/ 10 апреля 2010

хорошо, так что я понял это ... это было довольно просто после того, как я понял, что могу использовать комбинацию urllib, ulrlib2 и beautifulsoup

import urllib, urllib2
from BeautifulSoup import BeautifulSoup as bs_parse

data = urllib.urlencode(values)
req  = urllib2.Request(url, data)
res  = urllib2.urlopen(req)
page = bs_parse(res.read())
3 голосов
/ 09 апреля 2010

Нет, вы не можете сделать это легко. AFAIK ваши варианты, проще всего сначала:

  1. Прочитайте код JavaScript AJAX самостоятельно, как программист, поймите его, а затем напишите код на python для имитации вызовов AJAX вручную. Вы также можете использовать некоторое программное обеспечение для захвата для захвата запросов / ответов, сделанных вживую, и попытаться воспроизвести их с кодом;
  2. Используйте селен или какой-либо другой инструмент автоматизации браузера для загрузки страницы в реальном веб-браузере;
  3. Используйте какой-нибудь python javascript runner, например spidermonkey или pyv8 , чтобы запустить код javascript и подключить его к своей копии HTML-кода;
...