2016-04-02 13 views
2

İlk python projemi yapıyorum ve güzel bir şekilde sıkışıp kaldım ... Dokümantasyonları okuduktan ve bir dizi şeyi denedikten sonra bile hala sıkışıp kaldım.beautifulsoup - sonuçtaki dizeden bağlantı nasıl çıkarılır?

Amazon sonuç sayfasını ayrıştırıyorum ve her öğenin bağlantısını kaldırmak istiyorum.

Şimdiye kadar benim kodudur:

benim kod ile
import requests 
from bs4 import BeautifulSoup 
import time 
import re 
url = "http://www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=gtx+980+ti+-4gb+-970+-radeon+-amd" 
r = requests.get(url) 
g_data = soup.find_all("li", {"class": "s-result-item celwidget"}) 


for item in g_data: 
result = item.contents[0].find_all("a", {"class": "a-size-small a-link-normal a-text-normal"})[0] 
     print (result) 

, ben sayfadaki tüm öğelerin hedef başardı (burada gösterilmeyen ve kod ile, zaten öğenin ve fiyat adını kazımak için yönetilen), ancak i problem fiili bağlantı ...

Yani yukarıdaki kodun çıktısını hurdaya ile geçerli:

<a class="a-size-small a-link-normal a-text-normal" href="http://www.amazon.de/gp/offer-listing/B01062AE20"><span class="a-size-base a-color-price a-text-bold">EUR 759,00</span><span class="a-letter-space"></span>neu<span class="a-letter-space"></span><span class="a-color-secondary">(32 Angebote)</span><span class="a-letter-space"></span><span class="a-color-secondary a-text-strike"></span></a> 

Yani, nasıl alabilirim olduğunu http://www.amazon.de/gp/offer-listing/B01062AE20 Oradan?

Birlikte çalıştığımız:

item.contents[0].find_all("a", {"class": "a-size-small a-link-normal a-text-normal"})[0].link 
item.contents[0].find_all("a", {"class": "a-size-small a-link-normal a-text-normal"})[0].href 
item.contents[0].find_all("a", {"class": "a-size-small a-link-normal a-text-normal"})[0].get.link() 
... 

Ama imkânsız ... Ben sadece .. nasıl ... aptalca sadece kutunun dışında yapabilirsiniz dize ... Tabii BS4 ayrıştırmak istemiyorum? önceden

sayesinde Jaka elemanı alma

cevap

2

BeautifulSoup değerleri öznitelik like accessing items in dictionaries olup:

result["href"] 
result.get("href") 
+0

item.contents [0] .find_all ("a", { "sınıfı": "Bir -size-küçük a-link-normal bir metin-normal "}) [0] .get (" href ") ÇALIŞMA teşekkür ederim! –

+0

@JakaM. evet, link etiketi sizin durumunuzdaki 'result' değişkendir. – alecxe