2017-12-06 15 views
0

特定のアイテムについて、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()でもこのエラーは発生しません。

私が悪いアプローチを使用している場合、または誰かがこれを修正する方法を知っている場合、私はそれを高く評価します。おかげ

答えて

0

はない、すべてのLiが(find_all使用<h3>タグ

for li in soup: 
    try: 
     title = li.h3.a.text 
    except: 
     continue 
    print(title) 

EDIT

)内にカプセル化<a>タグは、すべて取得するために使用することができますがありますので、あなたはこのエラーを取得して、このコードを試してみてくださいアイテムと価格をループすることができます。アイテムや価格をループすることができます。あなたは

items= soup.find_all('h3',class_='lvtitle') 
price= soup.find_all('li',class_='lvprice prc') 
for i in range(5): 
    print items[i].text,price[i].text 

出力

第1版ポケモン詩10ヒトカゲベースセット影102分の46、新しいケースを見ることができるように私はすでに、最初の5つの項目を印刷してみました! $ 95.00

ポケモン第1版ベースセットヒトカゲ影#46 PSA 10 GEMミント $ 111.00

ポケモン第1版ベースセットヒトカゲ影#46 PSA 10 GEMミント $ 114.95だった。前の価格$ 121.00

ポケモンPSA 10 GEM MINT第1版影ヒトカゲ - 英語ベースセット $ 119.99

ポケモンPSA 10 - リザードン、リザード、+ヒトカゲ - POKEKYUN第1版$ 60.00

+0

大丈夫です!それは私にとって多くの意味があります。私はまだコーディングの基礎を学んでいますが、私はこれを試してみるべきではないかと感じています。 ただし、このコードを実行すると、最初のタイトルのみが表示され、プログラムは停止します。私が望んでいるように、すべてのタイトルを解析しているわけではありません。 – Gmuersch

+0

うん、どちらもうまくいかないようです。 (w-root)の代わりにfind( 'w-root')の代わりに スープ= BeautifulSoup(source、 'lxml')を見つけてください( 'w-root') 'ul' class_ = ListVIewInnerを使用する方法はありますか? – Gmuersch

+0

@Gmuersch私は答えをすべての商品の価格を得ることができるコードを追加しました。試してみてください –

関連する問題