前提・実現したいこと
ニュースサイト(Yahooニュース)からのスクレイピングによる記事抽出
発生している問題・エラーメッセージ
Traceback (most recent call last): File "200817_yahoonews_5pages.py", line 19, in <module> href = item.find('a')['href'] TypeError: 'NoneType' object is not subscriptable
該当のソースコード
python
1# 200817_yahoonews_5pages.py 2import csv 3import requests 4from bs4 import BeautifulSoup 5 6url = 'https://news.yahoo.co.jp/topics/top-picks' 7 8with open ('yahoonews_topics.csv', 'w') as f: 9 writer = csv.writer(f) 10 11 for i in range(5): 12 html = requests.get(url).text 13 soup = BeautifulSoup(html, 'html.parser') 14 next = soup.find('li', {'class' : 'pagination_item pagination_item-next'}) 15 url = 'https://news.yahoo.co.jp/' + next.find('a')['href'] 16 items = soup.find_all("li", {'class':'newsFeed_item'}) 17 for item in items: 18 title = item.text 19 href = item.find('a')['href'] 20 writer.writerow([title, href, ]) 21
試したこと
titleが抽出できているところまでは分かったのですが、
urlの抽出でエラーが出ます。
エラーメッセージでググっていくつかのサイトを見ましたが、今回のケースでどういった理由でこのエラーが出ているのか突き止められていません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
itemsに値は入っていますか?
itemsには値は入っています。
要素を1つだけ書き出すと、例えば以下のようなものです
<li class="newsFeed_item"><a class="newsFeed_item_link" data-ylk="rsec:st_topics;slk:title;pos:25;" href="https://news.yahoo.co.jp/pickup/6368532"><div class="newsFeed_item_thumbnail"><div class="sc-jAaTju yxion thumbnail thumbnail-small"><img alt="" class="sc-jDwBTQ ieGgsp" src="https://giwiz-tpc.c.yimg.jp/q/iwiz-tpc/images/tpc/2020/08/17/1597635001_20200817-28160045-nksports-000-view.jpg"/></div></div><div class="newsFeed_item_text"><div class="newsFeed_item_title">速報 尽誠学園vs.智弁和歌山</div><div class="newsFeed_item_sub"><div class="newsFeed_item_sourceWrap"><time class="newsFeed_item_date">8/17(月) 12:50</time></div></div></div></a></li>]
回答3件
あなたの回答
tips
プレビュー