2017-02-12 3 views
0

나는 웹 스크래핑을 처음 사용합니다. 나는 here에서 데이터를 긁어 내고 싶습니다. 주로 국가의 연도, 국가 및 GDP가있는 오른쪽 데이터입니다.Python을 사용하여이 사이트의 모든 데이터를 긁는 방법

내 코드는 다음과 같습니다 :

from urllib.request import urlopen 
from bs4 import BeautifulSoup 
data = "http://databank.worldbank.org/data/reports.aspx?source=2&series=NY.GDP.MKTP.CD&country=#" 
page = urlopen(data) 

soup = BeautifulSoup(page,'html.parser') 
name_box = soup.find('div',attrs = {'class':'canvas'}) 
name = name_box.text.strip() 

print(name) 

내가 데이터를 얻을 수 그러나이 최고 10 +에 만입니다.

제 질문은 데이터가 페이지 자체에 있지 않을 때 (예 : 다른 곳에서 가져온 경우) 이러한 문제에 대해 어떻게해야합니까? 입력에 대해 미리 감사드립니다.

+1

자바 스크립트 렌더링을 검색하거나 크롬 개발자 도구를 사용하여 요청을 확인하거나 셀렌을 사용하십시오. – eLRuLL

+0

(1) URL에 공백이 있습니다. (2) 어떤 데이터를 받으려고합니까? –

+0

지적 해 주셔서 고맙습니다.이 사이트는 다음과 같습니다. http://databank.worldbank.org/data/reports.aspx?source=2&series=NY.GDP.MKTP.CD&country=# 그렇지 않으면 '여기'를 문제. – learnandshare

답변

0

자바 스크립트가 더 많은 데이터를로드 할 때 종종 엔드 포인트를 호출합니다.

urlopen(data)으로 전화를 걸면 엔드 포인트로 전화가 연결됩니다. 유사한 호출은 requests.get(data) 또는 requests.post(data)을 사용하여 최신 버전의 파이썬에서 작성되었습니다. urlopen의 설명서에는 광범위한 예제와 용도가 있습니다. 당신이 요청을 보면 javascript가 많은 부분 (헤더, 매개 변수, 메소드 등)을 만들고있다. 자바 스크립트가 작성한 호출을 복사 (모방)하기 위해 urlopen의 요청에 이러한 부분을 추가 할 수 있습니다.

당신이 그 전화를 모방 할 수 있다면 당신은 당신의 수프에 후속 호출에서 데이터를로드합니다. 그런 다음 데이터를 구문 분석 할 수 있습니다.

전화를 모방 할 수 없다면 가장 좋은 방법은 일종의 헤드리스 브라우저를 사용하는 것입니다. 가장 많이 사용되는 몇 가지는 Dryscrape과 Selenium입니다. 나는 개인적으로 Dryscrape을 선호합니다.

질문에 대한 의견을 보면 이미 셀레늄을 사용하고있는 것으로 나타났습니다. 스크롤과 마찬가지로 스크롤이 끝나면 일반적으로 앞서 언급 한 후속 호출이 만들어집니다. 전체를 모방 할 수 있다면 (헤더, 매개 변수, qwargs 등), 브라우저에 데이터를로드 할 수 있습니다.

+0

감사합니다. 나는 셀레늄을 아직 사용해 보지 않았다. 문제를 풀기 전에 그것을 사용하는 방법을 읽고 있었다. 나는 종점에 대한 호출을 모방하여 무엇을 의미하는지 물어보고 싶습니다. – learnandshare

+0

끝점, 요청 및 urlopen에 대한 설명을 추가했습니다. 희망이 도움이됩니다. –

+0

지금은 훨씬 더 분명합니다. 감사. – learnandshare

2

링크를 방문하면 "다운로드 옵션"전용의 전체 메뉴가 있습니다. 그냥 사용하지 않는 이유는 무엇입니까?

+0

할 수 있으면 좋겠지 만 이것이 내 임무 다. – learnandshare

+0

@austin 진지하게 내가 stackoverflow에서 본이 최고의 대답 : D 조 –

관련 문제