2010-05-28 7 views
1

Может ли кто-нибудь направить меня на хорошую библиотеку скриншотов на экране Python для кода javascript (надеюсь, у вас есть хорошая документация/учебники)? Я хотел бы посмотреть, какие варианты там, но больше всего проще всего узнать с самыми быстрыми результатами ... интересно, есть ли у кого-нибудь опыт. Я слышал кое-что о spidermonkey, но, может быть, там есть лучшие?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 engine и Django. Благодаря!

ответ

1

Что я обычно делаю, это автоматизировать фактический браузер в этих случаях и захватить обработанный 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 
+0

Это похоже на селен? Я пробовал автоматизировать этот путь, но у меня есть некоторые проблемы с сгенерированным исходным кодом python. Мне нужно будет следить за всеми ссылками на javascript этого типа и скачивать/анализировать данные с каждого – Diego

+0

Я просто автоматизирую браузер напрямую. В Windows вы можете сделать это с помощью Internet Explorer или межплатформенным способом с помощью WebKit. –

+1

как решить в linux? –

1

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

1

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

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