2013-01-11 3 views
2

나는 거미줄을 쓰고 있지만, js로 렌더링 한 웹 사이트를 보았습니다. urllib2.open_url이 작동하지 않습니다. webbrowser.open_new (url)을 사용하여 브라우저를 열 수 있다는 것을 알았지 만 웹 브라우저에서 src 코드를 가져 오는 방법을 찾지 못했습니다. 웹 브라우저에서이 작업을 수행하는 데 사용할 수있는 방법이 있습니까? 아니면 js 사이트를 처리 할 웹 브라우저가없는 다른 솔루션이 있습니까?파이썬으로 webbrowser의 소스 코드를 얻는 방법

+0

웹 브라우저는 페이지의 마크 업을 저장하지 않고 DOM을 보유합니다. – Bergi

답변

0

JavaScript를 처리해야하는 경우 JavaScript 엔진을 구현해야합니다. 이것은 거미를 훨씬 더 복잡하게 만듭니다. 주로 자바 스크립트는 사용자가 취한 행동이나 시간에 따라 거의 항상 DOM을 수정하기 때문입니다. 따라서 크롤러에서 JS를 처리하는 것은 매우 어렵습니다. 스파이더에서 JavaScript를 실제로 처리해야하는 경우 Mozilla의 JavaScript 엔진을 살펴보십시오. https://developer.mozilla.org/en/docs/SpiderMonkey

5

사용 가능한 웹킷 엔진이있는 scraper를 사용할 수 있습니다.

그들 중 하나는 드라이 스크랩입니다.

예 :

https://github.com/niklasb/dryscrape
https://dryscrape.readthedocs.org/en/latest/index.html

+0

고스트 (http://jeanphix.me/Ghost.py/) 또 다른 headless webkit python 구현이 있습니다. 나는 둘 다 시도하지 않았으므로 어떤 것이 더 좋은지 말할 수 없다. –

+0

Raslan : 귀하의 제안에 대해 감사드립니다. Windows에서 작업 중일 때 'dryscrape'설치를 시도하면 설치가 성공했다고 알 수 있습니다. 그러나 실행할 때 drayscrape를 가져 오려고하면 'cssselect import GenericTranslator ImportError : cssselect라는 모듈이 없습니다. ' – user806135

+0

드라이 스크랩 설치 가이드에는 pip install -r requirements.txt 파일 requirements.txt에 설치할 패키지 목록이 있습니다. 그 중 하나가 cssselect입니다.'pip install -r requirement.txt'를 실행하려고하면 설치 가이드 –

1

당신이 전체 JS 엔진이 필요하면, 당신은 파이썬에서 웹킷을 구동하는 방법은 여러 가지가있다 :

import dryscrape 

search_term = 'dryscrape' 

# set up a web scraping session 
sess = dryscrape.Session(base_url = 'http://google.com') 

# we don't need images 
sess.set_attribute('auto_load_images', False) 

# visit homepage and search for a term 
sess.visit('/') 
q = sess.at_xpath('//*[@name="q"]') 
q.set(search_term) 
q.form().submit() 

# extract all links 
for link in sess.xpath('//a[@href]'): 
    print link['href'] 

# save a screenshot of the web page 
sess.render('google.png') 
print "Screenshot written to 'google.png'" 

이 더 많은 정보를 볼 . 최근까지 이러한 종류의 작업은 Selenium으로 완료되었습니다. Selenium은 전체 브라우저를 구동합니다.

최근에는 파이썬에서 웹킷 엔진 (v8 자바 스크립트 엔진 포함)을 실행하는 새롭고 간단한 방법이 있습니다. 이 질문을 참조하십시오 : Headless Browser for Python (Javascript support REQUIRED!)

이 블로그는 예제로 Scraping Javascript Webpages with Webkit을 참조합니다. 그것은 당신이 필요로하는 것보다 더 많거나 적게하는 것처럼 보입니다.

1

저는 며칠 동안 같은 문제에 대한 답을 찾으려고합니다.

QT frameworkWebKit으로 시도해 보시기 바랍니다. 두 개의 파이썬 바인딩이 있습니다. 하나는 PyQt이고 다른 하나는 PySide입니다. 좀 더 복잡한 것을 만들고 싶거나 코드를 100 % 제어하고 싶다면 직접 사용할 수 있습니다.

브라우저 환경에서 자바 스크립트를 실행하는 것과 같은 간단한 작업의 경우 Ghost.py을 사용할 수 있습니다. 그것은 some sort of documentation과 몇 가지 문제가 커맨드 라인에서 사용하지만 그렇지 않으면 그냥 좋은거야.

관련 문제