🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

2回答

2229閲覧

Pythonにてスクレイピングがうまくいかない

upa000

総合スコア5

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2019/10/20 09:40

前提・実現したいこと

Pythonにてスクレイピングを行い競馬の情報を取得しようとしております。

発生している問題・エラーメッセージ

https://gist.github.com/datasciesotist/8d7d792182e1fece6e48
ひとまず上記のサイトにあるコードを実行してみたのですが、エラーが発生してしまいます。


HTTPError Traceback (most recent call last)
<ipython-input-11-b9bf0a8650d0> in <module>
29 for race_no in range(1,13):
30 race="http://keiba.yahoo.co.jp"+str(race_src)+str(race_no).rjust(2,"0")
---> 31 race_html=urllib.request.urlopen(race)
32 race_soup=BeautifulSoup(race_html,"lxml")
33

C:\Anaconda3\lib\urllib\request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context)
220 else:
221 opener = _opener
--> 222 return opener.open(url, data, timeout)
223
224 def install_opener(opener):

C:\Anaconda3\lib\urllib\request.py in open(self, fullurl, data, timeout)
529 for processor in self.process_response.get(protocol, []):
530 meth = getattr(processor, meth_name)
--> 531 response = meth(req, response)
532
533 return response

C:\Anaconda3\lib\urllib\request.py in http_response(self, request, response)
639 if not (200 <= code < 300):
640 response = self.parent.error(
--> 641 'http', request, response, code, msg, hdrs)
642
643 return response

C:\Anaconda3\lib\urllib\request.py in error(self, proto, *args)
567 if http_err:
568 args = (dict, 'default', 'http_error_default') + orig_args
--> 569 return self._call_chain(*args)
570
571 # XXX probably also want an abstract factory that knows when it makes

C:\Anaconda3\lib\urllib\request.py in _call_chain(self, chain, kind, meth_name, *args)
501 for handler in handlers:
502 func = getattr(handler, meth_name)
--> 503 result = func(*args)
504 if result is not None:
505 return result

C:\Anaconda3\lib\urllib\request.py in http_error_default(self, req, fp, code, msg, hdrs)
647 class HTTPDefaultErrorHandler(BaseHandler):
648 def http_error_default(self, req, fp, code, msg, hdrs):
--> 649 raise HTTPError(req.full_url, code, msg, hdrs, fp)
650
651 class HTTPRedirectHandler(BaseHandler):

HTTPError: HTTP Error 500: Server Error

試したこと

なにも試せていません。
対応方法・方針をご教示いただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

'http://keiba.yahoo.co.jp/race/result/1606010505'

のページがない

28行の下に
print(race)
を追加して
でURL確認したらいい

投稿2019/10/21 02:32

barobaro

総合スコア1286

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

リクエストに対して、サーバーからステータスコード500のエラーが返っているので、リクエストの仕方が間違ってます。

投稿2019/10/20 10:03

otn

総合スコア85888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

upa000

2019/10/21 00:59

少し調べてみたのですが、リクエストがあっていてもタイムアウト等でもでるとのことでした。 そのあたりの切り分けを行いたいのですが・・・。
otn

2019/10/21 09:16

何のタイムアウトですか? 500は、サーバー内部で何らかのエラーが発生しているということを、サーバーからちゃんとレスポンスとして返してきています。 なので、リクエストが正しくても、そのときたまたまサーバーに障害が発生している場合も500が返りえます。その場合は、ブラウザで当該ページにアクセスしてみれば、切り分けられます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問