2017-02-03 4 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) 

データを無料で利用できるウェブサイトからデータテーブルをフェッチするために2つの異なるコードを使用しました。しかし、私は私のプログラムを実行するたびに、私は次のエラー 'urllib.error.HTTPError:HTTPエラー403:禁じられて'を取得します。さらに、リンクはブラウザから正常に動作しているようです。どのようにこの問題を解決するための任意のアイデア?データテーブルを取得しています

PS:データは認証なしで見ることができます。

答えて

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

それは別の(より難しい)質問です。リンクしているページにJavaScriptの束が読み込まれ、実際の表がロードされます。つまり、テーブル自体は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

いいえ、私はセレンを学び始めて、私の解決策をどうやって助けてくれるのかを理解する必要があるようです。とにかく答えに感謝します。問題の一部を解決しました。 –

関連する問題