Pythonのスクレイピングエラーについて教えてください。
Q&A
Closed
解決したいこと
ホットペッパーグルメのページをスクレイピングしようと思っているのですが、1ページ目はスクレイピング成功し、2ページ目以降がエラーとなって返ってきます。
解決方法を教えてください。
発生している問題・エラー
AttributeError: 'NoneType' object has no attribute 'find_all'
該当するソースコード
from time import sleep
from bs4 import BeautifulSoup
import requests
url = "https://www.hotpepper.jp/SA41/Y500/net1/bgn{}"
d_list = []
for i in range(1,3):
target_url = url.format(i)
print(target_url)
r = requests.get(target_url)
sleep(1)
soup = BeautifulSoup(r.text,"html.parser")
contents = soup.find("div",class_="mainContent")
shops = contents.find_all("div",class_="shopDetailBottom")
for shop in shops:
shop_top = shop.find("div",class_="shopDetailCoreInner")
store = shop_top.find("h3",class_="shopDetailStoreName")
shop_name = store.find("a")
money = shop_top.find("p",class_="dinnerBudget")
acsess = shop_top.find("li",class_="shopDetailInfoAccess")
url = "https://www.hotpepper.jp" + store.select("a")[0].get("href")
d = {"shop_name":shop_name.text,"money":money.text,"acsess":acsess.text,"url":url}
print(d)
自分で試したこと
「url = …」部分をコメントアウトするとスクレイピングできるため、恐らくurl部分でエラーが起きていると思います。
そこで、URLをテキストとして出力すれば良いかと思い、辞書に格納する部分で、「"url":url.text」としてみましたが、エラーが変わりませんでした、、。
0