2017-01-21 7 views
1

私は車へのリンクを削り取り、リンクをたどって各車のデータを削りたいが、私のコードは空の配列を返す。任意のアイデアをどのようにこれを修正するには?傷ついたスパン返り値なしGet_Text()Python美味しいスープ

import bs4 as bs 
import urllib 

source = urllib.request.urlopen('http://www.25thstauto.com/inventory.aspx?cursort=asc&pagesize=500').read() 
soup = bs.BeautifulSoup(source, 'lxml') 

car = soup.select('a[id*=ctl00_cphBody_inv1_rptInventoryNew]')   
for a in car: 
    source2 = urllib.request.urlopen('http://www.25thstauto.com/'+a.get('href')).read() 
    price.append(soup.find('span', {'id': 'ctl00_cphBody_inv1_lblPrice'})) 
    print(price) 
+0

物事のカップル:あなたは、実際のページを受信して​​いることを確認するために、 'source'変数をプリントアウトしてきましたか? (私は何度も、ページをこすって、適切なHTMLレスポンスを返さないことを認識していましたが、これは通常、ブラウザをよりよく複製するためのリクエストと共にユーザーエージェントを含めることで解決できます。 )次に、 'lxml' HTMLパーサが正しくインストールされ、設定されていることを確認しましたか? ([インストールドキュメント](https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser)を参照してください。) – SpencerD

答えて

1
import bs4 as bs 
import urllib 

source = urllib.request.urlopen('http://www.25thstauto.com/inventory.aspx?cursort=asc&pagesize=500').read() 
soup = bs.BeautifulSoup(source, 'lxml') 
price = [] 
car = soup.select('a[id*=ctl00_cphBody_inv1_rptInventoryNew]')   
for a in car: 
    source2 = urllib.request.urlopen('http://www.25thstauto.com/'+a.get('href')).read() 
    # make a new soup baesd on the link, do not use old soup 
    soup2 = bs.BeautifulSoup(source2, 'lxml') 
    price.append(soup2.find('span', {'id': 'ctl00_cphBody_inv1_lblPrice'})) 
    print(price) 

アウト:

[<span id="ctl00_cphBody_inv1_lblPrice">$2,995</span>] 
[<span id="ctl00_cphBody_inv1_lblPrice">$2,995</span>, <span id="ctl00_cphBody_inv1_lblPrice">$2,995</span>] 
[<span id="ctl00_cphBody_inv1_lblPrice">$2,995</span>, <span id="ctl00_cphBody_inv1_lblPrice">$2,995</span>, <span id="ctl00_cphBody_inv1_lblPrice">$2,995</span>] 
+1

スクープキングストライク! git hubはありますか? –

+0

@Sean Kellyいいえ、私はgithubで活動していません。答えを受け入れてください。 –

関連する問題