2015-01-07 4 views
4

파이썬 프레임 워크 Scrapy을 사용하여 웹 사이트에서 데이터를 긁어 내려고했습니다. 스파이더를 사용하여 웹 사이트에서 데이터를 가져올 수 있지만 웹 사이트를 탐색 할 때 문제가 발생합니다.웹 스크래핑 : 자동화 버튼 클릭

this에 따르면 게시물은 자바 스크립트를 잘 처리하지 못합니다.

또한 대답 한 대답에서 설명한 것처럼 mechanize 또는 lxml을 사용할 수 없습니다. Selenium and Scrapy의 조합을 사용하는 것이 좋습니다. 버튼의

기능 :

나는 웹 사이트에 제공을 탐색하고있다. 버튼 의 기능은 더 많은 쿠폰을 표시하는 것입니다. 그래서 그것을 클릭하면 결과를로드하는 javacript 함수를 호출합니다.

나는 또한 CasperJS and PhantomJS을보고 있었다. 그들은 작동할까요?

버튼 클릭 만 자동화하면됩니다. 어떻게해야합니까?

+0

정말 버튼에 따라 다릅니다. 세부 사항을 공유 할 수 있습니까? – alecxe

+0

Selenium을 사용하면 Javascript가 정상적인 브라우저에서 실행됩니다. Selenium IDE 또는 WebDriver만으로 간단한 버튼 클릭을 자동화 할 수 있습니다. – BadZen

답변

3

우선 - 예 : PhantomJS ghostdriver을 파이썬과 함께 사용할 수 있습니다. 그것은 내장되어 python-selenium에 :

pip install selenium 

데모 :

>>> from selenium import webdriver 
>>> driver = webdriver.PhantomJS() 
>>> driver.get('https://stackoverflow.com/questions/27813251') 
>>> driver.title 
u'javascript - Web scraping: Automating button click - Stack Overflow' 

"scrapy + 셀레늄"거미의 예를 제공하는 여러 다른 스레드도있다 :

도 도움이 될 수있는 scrapy-webdriver module도 있습니다. 셀레늄과


사용 scrapy 아래 drammatically 심지어 머리가없는 PhantomJS 브라우저 당신에게 큰 오버 헤드가 느린 것을 줄 것이다.

필요한 데이터를 얻으려는 기본 요청을 시뮬레이트하여 "더 많은 쿠폰 표시"버튼을 클릭 할 가능성이 큽니다. 브라우저 개발자 도구를 사용하여 어떤 종류의 요청이 시작되었는지 탐색하고 거미 내부의 시뮬레이션에 scrapy.http.Request을 사용하십시오.

+0

답장을 보내 주셔서 감사합니다. 나는 우리의 대답을 기초로 무언가를 연구하기 시작했습니다. 나는 여기에 약간의 세부 사항에 대한 명확성을 더 원했다. 이 예제에서는'PhantomJS'를 사용하여 페이지 제목을 얻을 수 있다고 설명했습니다. 그렇다면 여기서 치료법은 무엇입니까? 기본적으로 사용법의 차이점을 알고 싶습니다. 설명해 주시겠습니까? –

+1

@PrakharMohanSrivastava 중요한 것은 치료법이 브라우저가 아니며 javascript 엔진이 내장되어 있지 않다는 것입니다.많은 사이트에서 자바 스크립트를 사용하여 페이지를 구성합니다.이 자바 스크립트 코드는 브라우저에서 실행됩니다. 브라우저는'script' 링크를 따르고, 추가 js 파일을로드하고, 코드를 실행하고, DOM을 변경합니다. 이러한 사이트의 경우 브라우저 개발자 도구에서 볼 수있는 것처럼 실제 브라우저를 사용하여 페이지를 구성하는 것이 더 쉽습니다. 그런 다음 결과'.page_source '를 처리를 위해 치료에 제공 할 수 있습니다. 희망은 물건을 조금 더 명백하게한다. – alecxe