2014-12-29 2 views
0

나는 파이썬을 사용하여 무한 스크롤로 구현 된 웹 사이트를 긁어 모으려고합니다. 사실, 웹은 흥미 롭습니다. 셀레늄 webdriver를 사용하여 무한한 스크롤로 웹을 긁는 방법을 알고 있습니다. 그러나 웹 드라이버는 기본적으로 웹 방문 프로세스를 모방하고 Scraping을 위해 BeautifulSoup 및 urllib를 사용하는 것보다 느리며 훨씬 느립니다. 무한 스크롤로 웹을 긁을 수있는 효율적인 방법을 언제 알고 있습니까? 감사.무한 스크롤로 웹 사이트를 긁을 수있는 빠른 방법이 있습니까?

답변

3

무한한 스크롤은 아마도 스크롤 할 때 더 많은 데이터를 검색하기 위해 Ajax 쿼리를 사용하고있을 것이다. 브라우저의 개발 도구를 사용하여 요청 구조를 조사하고 동일한 엔드 포인트를 직접 시도하십시오. 이 방법으로 필요한 데이터를 json 또는 xml 형식으로 얻을 수 있습니다.

크롬에서 dev 도구 (Windows에서는 Ctrl + Shift + I)를 열고 네트워크 탭으로 전환하십시오. 그런 다음 스크롤을 시작하면 더 많은 콘텐츠가로드되면 새로운 네트워크 활동이 표시됩니다. 특히 Ajax 요청은 "xhr"로 필터링 할 수 있습니다. 새로운 네트워크 항목을 클릭하면 헤더, 요청 본문, 응답 구조 및 요청이 부딪 치는 url (끝점)과 같은 요청에 대한 자세한 정보가 표시됩니다. 이 URL을 스크랩하는 것은 서식이 지정된 데이터를 통해 구문 분석 할 HTML이없는 것을 제외하고는 웹 사이트를 스크랩하는 것과 동일합니다.

일부 웹 사이트는 이러한 유형의 동작을 차단하려고 시도합니다. 그럴 경우 셀 늄이없는 팬텀을 사용하는 것이 좋습니다. 웹 사이트에서의 인간 상호 작용을 모방하는 데 매우 (셀레늄과 비교하여) 빠릅니다.

+0

'selenium.webdriver.PhantomJS' 또는 Javascript에서 곧은'phantomjs'를 의미합니까? – jfs

+0

내가 선호하는 것은 직선 팬텀이다. 왜냐하면 오버 헤드가 적기 때문이다. 솔직히 셀렌과 함께 사용할 때 그 차이는 작다. Selenium + phantomjs는 headless가 아닌 브라우저에서 webdriver를 사용하는 것보다 훨씬 빠릅니다. – bspates

+0

@bspates 저는 초보자입니다. 필자가 언급 한 첫 번째 방법 (요청 구조를 검사하고 동일한 끝점을 직접 지정하는 방법)은 아닙니다. 다음 url을 예로 들어 설명해 주시겠습니까? [link] (http://www.pinterest.com/cremedelacrumb/followers/) –

관련 문제