前提・実現したいこと
スクレイピングを行なっているのですが実行すると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)
回答1件
あなたの回答
tips
プレビュー