2010-05-28 3 views
1

누구든지 자바 스크립트 코드 (좋은 문서/튜토리얼을 가진 하나)를위한 좋은 파이썬 스크린 스크래핑 라이브러리로 안내 할 수 있습니까? 나는 어떤 옵션이 저기에 있는지보고 싶지만 가장 빠른 결과로 배우는 것이 가장 쉽다. 누군가 경험이 있는지 궁금하다. 나는 spidermonkey에 대해 몇 가지 이야기를 들었지만, 아마도 거기에 더 좋은 것들이있을 것입니까?Python Scraper for Javascript?

특히 BeautifulSoup 및 Mechanize를 사용하여 여기에 도달하지만 자바 스크립트 팝업을 열고 데이터를 제출하고 자바 스크립트 팝업에서 결과를 다운로드/구문 분석해야합니다.

<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을 가져옵니다.

편집 :

가 여기에 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 소스 코드에 문제가 있습니다. 이 유형의 모든 자바 스크립트 링크를 따라 가서 각각의 데이터를 다운로드/파싱해야합니다. – Diego

+0

방금 ​​브라우저를 직접 자동화합니다. Windows에서는 Internet Explorer 또는 WebKit을 사용하는 교차 플랫폼 방식으로이 작업을 수행 할 수 있습니다. –

+1

어떻게 리눅스에서 해결할 수 있습니까? –

1

기본 JavaScript를 렌더링하기 위해 Python 바인딩을 사용하고 고급 상호 작용을 위해 Chickenfoot을 사용합니다. 자세한 내용은 this webkit example을 참조하십시오.

1

Spynner라는 "프로그래밍 방식의 웹 브라우저"를 사용할 수도 있습니다. 나는 이것이 이것이 최선의 해결책이라는 것을 알았다. 상대적으로 사용하기 쉽습니다.