質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.47%
スクレイピング

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

831閲覧

スクレイピング エラーが出たり出なかったりする

wizerd

総合スコア12

スクレイピング

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2021/08/31 02:17

前提・実現したいこと

スクレイピングを行なっているのですが実行すると3回に1回程度エラーが発生し情報を取得できない時があり、想定される原因を教えていただきたいです。
同じ内容のコードを何度も実行すると成功し、情報を取得できる時もあるのですが、失敗し、情報を取得できない時もあります。

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

Traceback (most recent call last): File "/Users/nakamotokenta/Desktop/ScrapingBeginner-main/Section14/リクナビ2_2ページ目17企業.py", line 21, in <module> Job_Description = tr_tag_list[0].find_all('p') IndexError: list index out of range

該当のソースコード

Python

1from bs4 import BeautifulSoup 2import requests 3 4 5url = 'https://next.rikunabi.com/rnc/docs/cp_s01880.jsp?fr=cp_s00890&rqmt_id=103505127002&list_disp_no=69&leadtc=keyword_ichiran_cst_bakuten_cast_ttl' 6r = requests.get(url) 7 8soup = BeautifulSoup(r.content, "html.parser") 9 10tr_tag_list = soup.find_all('tr', class_='rnn-tableGrid') 11Job_Description = tr_tag_list[0].find_all('p') 12Job_offer = tr_tag_list[1].find_all('p') 13print(Job_offer)

試したこと

####その1
pタグの取得方法を変更して実行を繰り返し行ってみたら、やはり3回に1回程度エラーが発生します。ですがエラー内容はAttributeErrorに変わりました。

######実行コード

Python

1soup = BeautifulSoup(r.content, "html.parser") 2table_tag = soup.find('table', class_='rnn-detailTable') 3tr_tag_list = table_tag.find_all('tr', class_='rnn-tableGrid') 4Job_Description = tr_tag_list[0].find_all('p') 5Job_offer = tr_tag_list[1].find_all('p') 6print(Job_offer)

######結果

※エラーが発生した時 Traceback (most recent call last): File "/Users/nakamotokenta/Desktop/ScrapingBeginner-main/Section14/リクナビ2_2ページ目17企業.py", line 21, in <module> tr_tag_list = table_tag.find_all('tr', class_='rnn-tableGrid') AttributeError: 'NoneType' object has no attribute 'find_all' ※成功した場合 [<p>【いずれか必須】■javascript/pythonでの開発設計・製作経験者<br/>■ユーザー向けアプリケーションのセキュリティ設計・実装経験者   ■AWS環境を活用したアプリ利用環境の設計・構築経験者<br/>■音声データのディジタル化での活用経験者</p>, <p>[学歴]高校 専修 短大 高専 大学 大学院</p>]

####その2
サイトを何度も更新し、HTMLが変更していないか確認したが変更していなかった。

補足情報(FW/ツールのバージョンなど)

M1 macOS Big Sur ver11.5
エディタ VScode バージョン: 1.59.1
python 3.8.8 64-bit ('base':conda)

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

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

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

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

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

m.ts10806

2021/08/31 02:43 編集

リクナビに許可は取られてますか? これに限らず公式にAPIなど提供されてない場合は許可取るのが確実です。 明示的に禁止しているサービスもありますし、禁止が謳われてないからとやっていいというわけでもないです。非常にブラックに近いグレーな行為という意味です。
wizerd

2021/08/31 03:44

いえ、許可はとっていません。明示的に禁止されていなかったので大丈夫だと思っていました。 ご指導ありがとうございます!
otn

2021/08/31 05:38

エラーになるときのHTMLは見てないんですか??
wizerd

2021/08/31 05:51

回答ありがとうございます! 確かにエラーになるときのHTMLを見ていませんでした! 今リクナビにスクレイピングしてもいいか返答待ちなのでOKが出たら確認し、質問内容を変更します!
guest

回答1

0

自己解決

すみませんが確認を取ったところ、リクナビさんから申し訳ないがやめてほしいと言われたのでこの質問を解決済みとし、終了さしてもらいます。

投稿2021/09/02 02:23

wizerd

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問