私はBeautifulSoupの価格のWebクローラを作成しようとしています。以下は、私がクロールに興味を持っているウェブサイトから表示されているものです。divタグ間のデータを抽出するPythonでBeautifulsoup
<div class="product-total-price">
<span itemprop="price">$14.76</span>
価格 "$ 14.76は、" 私が興味のすべてであるしかし、私は
import bs4
import requests
def getPrice(productUrl):
res = requests.get(productUrl)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, 'html.parser')
return soup.select("div.product-total-price > span")[0].parent
price = getPrice('https://www.homedepot.ca/en/home/p.12-sheetrock-ultralight-drywall-gypsum-panel-4-x-12.1000149007.html')
print(price)
それを返すようにしようとすると、出力は次のようになります。
-
私は.parentを使用しました。何が起こっているか見るために
<div class="product-total-price">
<span itemprop="price">-</span>
そして価格は表示されません。私はプログラミングに慣れていないし、これを研究しようとしたが運がなかった。助けていただければ幸いです。ありがとうございます。
をセレンを得ることができます。実際の価格 '($ 14.76)'は、ページがいくつかのjavascriptを呼び出すまでレンダリングされず、 '-'のプレースホルダではなく、実際の価格($ 14.76)を表示するようにページを変更します。この問題を解決するには、いくつかの方法をお読みください。https://datapatterns.readthedocs.io/en/latest/recipes/scraping-beyond-the-basics.html#dealing-with-javascript – serk
ありがとうございました。私はあなたのリンクを見て、解決策を見つけました。理想的ではありませんが、私はもう少し学べました。私は最後にセレンを使用した、私は以下の答えを投稿します。ありがとうございました! –