前提・実現したいこと
Pythonを使って指定したサイトのalexaランキングを調べるプログラムを作っています。
URLからclassを指定して、ランキングの情報を取得することはできているのですが、取得した情報から不要な空白などを削除するとエラーが出ます。
発生している問題・エラーメッセージ
TypeError: expected string or bytes-like object
該当のソースコード
Python
1import requests 2from bs4 import BeautifulSoup 3import re 4 5want_URL = 'google.com' #とりあえず、googleにしています 6 7URL = ('https://www.alexa.com/siteinfo/' + want_URL) 8res = requests.get(URL) 9soup = BeautifulSoup(res.text, "html.parser") 10 11ranking = soup.find('p', class_='big data') #big dateというclassにランキング情報が入っています 12ranking = re.sub('[<p class="big data"> <span class="hash">#</span> </p>]', ' ', ranking) #ここでspanなど不要な情報を削除 13print(ranking.strip() + '位です') #stripでスペースと改行を削除 14
試したこと
不要な部分を削除する部分のコードは他のプログラムで動くか確認して、動きました。
ranking = soup.find('p', class_='big data')で不要な部分を含めたランキング情報は取得できています。
補足情報(FW/ツールのバージョンなど)
Windows 10
Python 3.9
BeautifulSoup 最新
VScode
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/07/13 06:36