2017-02-03 3 views
0
import urllib.request 
with urllib.request.urlopen('https://pakstockexchange.com/stock2/index_new.php?section=research&page=show_price_table_new&symbol=ABOT') as response: 
     html=respnse.read() 

import pandas as pd 
df=pd.read_html('https://pakstockexchange.com/stock2/index_new.php?section=research&page=show_price_table_new&symbol=ABOT') 
print(df) 

두 가지 다른 코드를 사용하여 웹 사이트에서 데이터 테이블을 불러와 데이터를 무료로 사용할 수있었습니다. 하지만 내 프로그램을 실행할 때마다 다음 오류가 발생합니다. 'urllib.error.HTTPError : HTTP 오류 403 : 금지됨'. 링크는 브라우저에서 제대로 작동하는 것 같습니다. 어떤 아이디어가이 문제를 해결할 수 있을까요?데이터 테이블 가져 오기

추 신 : 인증없이 데이터를 볼 수 있습니다.

답변

0

서버가 정확히 301을 올리는 이유는 모르겠지만 일반적으로 높은 수준의 요청에 대해서는 urllib을 직접 사용하는 것이 좋습니다. 대신 requests 패키지를 사용해야합니다.

등가 requests

는 가져 오기 :

r = requests.get("https://pakstockexchange.com/stock2/index_new.php?section=research&page=show_price_table_new&symbol=ABOT") 

작품 벌금을.

r.status_code == 200 
True 
+0

내가 원하는 것을 거의 제공합니다. 하지만 전체 페이지가 아닌 데이터 테이블을 읽는 방법은 무엇입니까? –

+0

그것은 별도의 (그리고 더 어려운) 질문입니다. 링크하려는 페이지는 자바 스크립트를로드 한 다음 실제 테이블을로드합니다. 즉,이 테이블은 HTML 자체로 출판되지 않습니다 ... 이것을 읽으려면 ['selenium'] (http://selenium-python.readthedocs.io/getting-started.html)과 ['pandas .read_html'] (http://pandas.pydata.org/pandas-docs/version/0.19.2/generated/pandas.read_html.html). 이 데이터에 대한 더 쉬운 소스가 다른 곳에 없다고 확신합니까? –

+0

아니, 셀렌을 배우기 시작하고 내 해결책으로 어떻게 도와 줄 수 있는지 알아야 할 것 같습니다. 어쨌든 대답 주셔서 감사합니다. 문제의 한 부분을 해결했습니다. –

관련 문제