akaikasa
@akaikasa

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ヤフーニュースをWEBスクレイピング

解決したいこと

ヤフーニュースのトピックを抽出、出力したいのですが、エラーとなってしまいます。
解決方法を教えて下さい。

発生している問題・エラー

C:\python>test.py
Traceback (most recent call last):
  File "C:\python\test.py", line 18, in <module>
    print(data.span.string)
AttributeError: 'NoneType' object has no attribute 'string'

ソースコード

from bs4 import BeautifulSoup
import requests
import re
# アクセスするURL
url = 'https://news.yahoo.co.jp'
# webに接続する
response = requests.get(url)
# BeautifulSoupにヤフーニュースのページ内容を読み込ませる
soup = BeautifulSoup(response.text, "html.parser")
# ヤフーニュースの見出しとURLの情報を収集して出力する
data_list = soup.find_all(href=re.compile("news.yahoo.co.jp/pickup"))
for data in data_list:
    print(data.span.string)
    print(data.attrs["href"])

環境

■Pythonバージョン
3.10

■pip list
beautifulsoup4     4.10.0
certifi            2021.10.8
charset-normalizer 2.0.9
idna               3.3
lxml               4.7.1
pip                21.3.1
requests           2.26.0
setuptools         58.1.0
soupsieve          2.3.1
urllib3            1.26.7
0

1Answer

print(data.span.string)

のところを

print(data.string)

とすると

沖縄 600人前後感染の見通し
https://news.yahoo.co.jp/pickup/6414306
None
https://news.yahoo.co.jp/pickup/6414314
None
https://news.yahoo.co.jp/pickup/6414310
統計不正 中小企業の支援に影響
https://news.yahoo.co.jp/pickup/6414292
None
https://news.yahoo.co.jp/pickup/6414308
None
https://news.yahoo.co.jp/pickup/6414309
ジョブチューン 中傷に注意喚起
https://news.yahoo.co.jp/pickup/6414300
None
https://news.yahoo.co.jp/pickup/6414313
None
https://news.yahoo.co.jp/pickup/6414314

このように出力されます。
参考記事にした記事:PythonとBeautiful Soupでスクレイピング

0Like

Your answer might help someone💌