特定のアイテムについて、Ebayで販売されているすべてのリスティングのデータを取得しようとしています。私は、ページ上の最初の項目をつかむ方法を考え出したが、私はそれ以降のすべての記事をつかむためにループのためにしようとするとき、それは私が試してみてくださいそのちょうどその時、一部が正常に動作しエラーを返すforループを作成するたびに、私のデータスクレーパーで1つのリスティングからデータを取り出すことができます
from bs4 import BeautifulSoup
import requests
source = requests.get('https://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw=charmander%201st%20edition%20psa%2010&LH_Complete=1&LH_Sold=1&rt=nc&_trksid=p2045573.m1684').text
soup = BeautifulSoup(source, 'lxml').find('w-root')
#This gives the HTML of the page that includes all the listings
item = soup.li
#each specific item is in an li tag and this variable grabs the first item that was sold
title = item.h3.a.text
print(title)
price = item.span.text
print(price)
#correctly prints out the Title and price of the first listing
を失敗しましたループが他のすべてのリストを取得するために私はエラーが発生します。
for li in soup:
title = li
print(title)
#this gives me the tags for each listing but when i try and go deeper into the tags like...
for li in soup:
title = li.h3.a.text #similar to how i originally grabbed the first item
print(title)
it prints out: "AttributeError: 'NavigableString' object has no attribute 'h3'"
と同様に価格変動のために:私はここではいくつかの異なるものを試してみましたが、き
は一例です。 li.prettify()
でもこのエラーは発生しません。
私が悪いアプローチを使用している場合、または誰かがこれを修正する方法を知っている場合、私はそれを高く評価します。おかげ
大丈夫です!それは私にとって多くの意味があります。私はまだコーディングの基礎を学んでいますが、私はこれを試してみるべきではないかと感じています。 ただし、このコードを実行すると、最初のタイトルのみが表示され、プログラムは停止します。私が望んでいるように、すべてのタイトルを解析しているわけではありません。 – Gmuersch
うん、どちらもうまくいかないようです。 (w-root)の代わりにfind( 'w-root')の代わりに スープ= BeautifulSoup(source、 'lxml')を見つけてください( 'w-root') 'ul' class_ = ListVIewInnerを使用する方法はありますか? – Gmuersch
@Gmuersch私は答えをすべての商品の価格を得ることができるコードを追加しました。試してみてください –