現在、Pythonを使ったスクレイピングで商品サイトの画像情報を取得しようとしています。
その前段階の処理として、商品画像ページへのリンクを取得しようとしており、以下のコードを作成しました。
Python
1import requests as req 2from bs4 import BeautifulSoup 3import time 4import lxml 5from selenium import webdriver 6 7def get_requests(url): 8 time.sleep(5) 9 res = req.get(url) 10 return res 11 12if __name__ == '__main__': 13 # URL取得 14 url = 'https://www.fujiya-peko.co.jp/sweets/products_list/index.html' 15 16 # サイトに接続 17 res = get_requests(url) 18 19 # ここからseleniumでボタンを押す 20 driver_path = 'C:\pythonCode\chromedriver_win32\chromedriver.exe' 21 driver = webdriver.Chrome(driver_path) 22 driver.get(url) 23 selmoreBtn = driver.find_element_by_class_name('moreInfoBtn') 24 selAtag = selmoreBtn.find_element_by_tag_name('a') 25 selAtag.click() 26 27 # 以下のクラスで、商品情報一覧を取得 28 # flexElement4 boxLink01 jsonBoxLink moreInfoBlock 29 soup = BeautifulSoup(res.text, 'lxml') 30 31 productinfo = soup.find('div', class_='moreInfoBlock') 32 33 print(productinfo['class']) 34 print(productinfo.string) 35 print(productinfo.text) 36 37 divs = productinfo.find_all('div') 38 39 print(len(divs)) 40 41 # 商品画像ページへのリンク(aタグのhref属性)を出力 42 for div1 in divs: 43 adata = div1.find('a') 44 45 if adata is not None: 46 print(adata['href'])
対象のサイトには「もっと見る」ボタンがあるため、seleniumを使用して、ボタンをクリックしたときの操作を行うようにしています。
その後で、Beautifulsoupを使用し、HTMLの情報を取得しているのですが、何故か
「productinfo = soup.find('div', class_='moreInfoBlock')」の直後のprint文で「productinfo.string」、「productinfo.text」の
出力結果がNoneになり、その後のdivsの中身も空になってしまっています。
コード上のどこに問題があるか、分かる方がおられましたら宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー