Python Scraper для Javascript? - PullRequest
       4

Python Scraper для Javascript?

1 голос
/ 28 мая 2010

Может ли кто-нибудь направить меня в хорошую библиотеку очистки экрана Python для кода javascript (надеюсь, с хорошей документацией / учебными пособиями)? Я хотел бы посмотреть, какие варианты есть, но больше всего легче всего учиться с быстрыми результатами ... интересно, есть ли у кого-то опыт. Я слышал кое-что о спайдермонки, но, может быть, есть и лучшие?

В частности, я использую BeautifulSoup и Mechanize, чтобы добраться сюда, но мне нужен способ открыть всплывающее окно javascript, отправить данные и загрузить / проанализировать результаты во всплывающем окне javascript.

<a href="javascript:openFindItem(12510109)" onclick="s_objectID=&quot;javascript:openFindItem(12510109)_1&quot;;return this.s_oc?this.s_oc(e):true">Find Item</a>

Я бы хотел реализовать это с помощью движка Google App и Django. Спасибо!

Ответы [ 3 ]

1 голос
/ 28 мая 2010

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

1 голос
/ 30 мая 2011

Вы также можете использовать «программный веб-браузер» по имени Spynner. Я нашел это, чтобы быть лучшим решением. Относительно прост в использовании.

1 голос
/ 28 мая 2010

В этих случаях я обычно автоматизирую настоящий браузер и извлекаю обработанный HTML оттуда.

Edit:

Вот пример автоматизации InternetExplorer для перехода по URL-адресу и получения заголовка и местоположения после загрузки страницы.

from win32com.client import Dispatch

from ctypes import Structure, pointer, windll
from ctypes import c_int, c_long, c_uint
import win32con
import pywintypes

class POINT(Structure):
    _fields_ = [('x', c_long),
                ('y', c_long)]
    def __init__( self, x=0, y=0 ):
        self.x = x
        self.y = y

class MSG(Structure):
    _fields_ = [('hwnd', c_int),
                ('message', c_uint),
                ('wParam', c_int),
                ('lParam', c_int),
                ('time', c_int),
                ('pt', POINT)]

def wait_until_ready(ie):
    pMsg = pointer(MSG())
    NULL = c_int(win32con.NULL)

    while True:

        while windll.user32.PeekMessageW(pMsg, NULL, 0, 0, win32con.PM_REMOVE) != 0:
            windll.user32.TranslateMessage(pMsg)
            windll.user32.DispatchMessageW(pMsg)

        if ie.ReadyState == 4:
            break


ie = Dispatch("InternetExplorer.Application")

ie.Visible = True

ie.Navigate("http://google.com/")

wait_until_ready(ie)

print "title:", ie.Document.Title
print "location:", ie.Document.location
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...