2010-04-09 2 views
4

hi im создание скребка с использованием python 2.5 и beautifulsoup , но в случае проблемы ... часть веб-страницы генерирует после того, как пользователь нажмет на какую-нибудь кнопку, начните ajax запросить, вызвав конкретную функцию javacsript, используя надлежащие параметрыbeautifulsoup and mechanize для получения результата вызова ajax

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

я был бы признателен за любые ссылки или некоторые образцы кода благодаря

ответ

6

нормально, так что я понял это ... это было довольно просто после того, как я понял, что я мог бы использовать комбинацию 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()) 
+2

Я столкнулся с той же проблемой ... PLS Help ... Что такое 'values' – Umair

3

Нет, вы не можете сделать это без труда. AFAIK ваших вариантов, самый простой первый:

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

привет, первый вариант не был бы так просто, потому что javascript находится в упакованной версии спасибо за головокруки, я посмотрю, что это первая вещь tommorow – nabizan

+0

@nabizan: вот почему я также предложил использовать программное обеспечение для захвата по опции 1 – nosklo

+0

привет, поэтому после небольшого копания на распаковке javascript я узнаю что я должен назвать и как. чем это было довольно легко (см. мой ответ для получения дополнительной информации) – nabizan

Смежные вопросы