前提・実現したいこと
Jupyternotebookでnetkeiba.comの以下のURLから勝率や単勝回収率が記載されたテーブルをスクレイピングしてきて、csvに吐き出したいと思っています。
https://race.netkeiba.com/?pid=data_list&id=c201906010311&mode=distance&cid=1
実装中に以下のエラーメッセージが発生しました。
AttributeError: 'NoneType' object has no attribute 'find_all'
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-17-0325cb6c9893> in <module>() 50 51 if __name__ == '__main__': ---> 52 main() <ipython-input-17-0325cb6c9893> in main() 35 table = soup.find('table', {'id':'table_sort_back', 36 'class': 'data_main_tb_01 data_table_01 nk_tb_common'}) ---> 37 rows = table.find_all("tr") 38 39 csvFile = open("n1.csv", 'wt', newline = '', encoding = 'utf-16')#utf-8だと文字化け AttributeError: 'NoneType' object has no attribute 'find_all'
該当のソースコード
import requests import csv import urllib from bs4 import BeautifulSoup from urllib.parse import urljoin def main() -> None: url = 'https://race.netkeiba.com/?pid=data_list&id=c201906010311&mode=distance&cid=1' USER = "XXXXXX@gmail.com"(ダミーです) PASS = "YYYYYYYYY"(ダミーです) login_info = { "login_id":USER, "pswd":PASS, } session = requests.session() url_login ="https://regist.netkeiba.com/account/?pid=login&action=auth" ses = session.post(url_login, data=login_info) res = session.get(url) soup = BeautifulSoup(res.content, "html.parser") print(soup.text) table = soup.find('table', {'id':'table_sort_back', 'class': 'data_main_tb_01 data_table_01 nk_tb_common'}) rows = table.find_all("tr") csvFile = open("netkeiba.csv", 'wt', newline = '', encoding = 'utf-16') writer = csv.writer(csvFile, dialect='excel', delimiter='\t', quoting=csv.QUOTE_ALL) try: for row in rows: csvRow = [] for cell in row.find_all(['td', 'th', 'a']): csvRow.append(cell.get_text().strip('\n')) writer.writerow(csvRow) finally: csvFile.close() if __name__ == '__main__': main()
試したこと
ちなみにですが、
url = 'http://db.netkeiba.com/horse/result/2011102151/'
とした場合、
table = soup.find('table', {'class': 'db_h_race_results nk_tb_common'})
とするとエラーは出ずにうまくいきます。
補足情報(FW/ツールのバージョンなど)
環境は以下です
MAC OS High Sierra バージョン10.13.6
Jupyter notebook 5.0.0

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/12 13:43
2019/01/12 13:51