2016-10-16 7 views
1

Ich versuche, eine HTML-Tags zu bekommen, wenn das Element keinen Text hat.
Zum Beispiel: Ich bin durchschleifen alle "a" Attribute (URL).
Allerdings enthält ein Teil der URL Text und einige nicht.
In diesem Fall versuche ich, die URL für diejenigen, die keinen Text haben, zu bekommen.
Deshalb habe ich so etwas gemacht.Wie bekomme ich eine bestimmte HTML-Tags

response = requests.get('https://fw.tmall.com/tmall/ser/tmall_detail.htm?spm=a1z1g.2177293.0.0.qF9gPO&service_code=ts-4078').text 
soup = BeautifulSoup(response) 
main_wrapper = soup.find('div',attrs={'id':'success-case'}).findAll('a') 
for items in main_wrapper: 
    dictionary = {} 
    href = items['href'] 
    if items.string is None: 
     print items['href'] 
    else: 
     print items.string 

Wie mache ich es so, dass if items.string is None: das Element spezifische URL nur erhalten und nicht alle die URL?

+0

Können Sie versuchen zu klären? Was bekommst du? Was willst du bekommen? –

+0

Ich möchte bestimmte HTML-Attribut erhalten, in diesem Fall wäre es IMG URL, die innerhalb ist, wenn das Element keinen Text hat. – Dilli

Antwort

0

Ich versuche, die URL für diejenigen zu erhalten, die Text auf sie haben nicht

Sie könnten das Element spezifische Liste Verständnis

hrefs = [a['href'] for a in main_wrapper if a.string is None] 

bekommen verwenden URL nur und nicht die ganze URL!

Nicht klar, was das bedeutet. Jedes a-Tag hat nur eine bestimmte URL. Sie sind Iterieren über eine Liste von a Tags, also erhalten Sie eine Liste von URLs

Ich möchte bestimmte HTML-Attribut bekommen, in diesem Fall wäre es IMG URL sein, die <a>

dann nach innen ist man braucht eine anderes find Verfahren innerhalb der Schleife zu extrahieren, dass <img> Element zu erhalten, das src Attribut

+0

Süß! Danke :) – Dilli

+0

Willkommen. Sie können das Häkchen neben dem Beitrag verwenden, um sich zu bedanken. –

0

ich nehme an, Sie versuchen, die einzigartigen Anker von der ungeordneten Liste zu bekommen in Ihrem div. Sie können jeder Anker sehen eine einzigartige Klasse hat, rel-ink vs rel-name:

<a href="//store.taobao.com/shop/view_shop.htm?user_number_id=2469022358" target="_blank" class="rel-ink"><img alt="NIHAOMARKET官方海外旗舰店" src="//img.alicdn.com/top/i1/TB1urimJFXXXXabaXXXwu0bFXXX.png" class="rel-img"></a> 
<a href="//store.taobao.com/shop/view_shop.htm?user_number_id=2469022358" target="_blank" class="rel-name">NIHAOMARKET官方海外旗舰店</a> 

So können Sie den Ankerklassennamen für den ersten Anker in jedem li verwenden dh rel-Tinte zu ihnen:

urls =[a["href"] for a in soup.find('div', id="success-case").find_all("a",class_="rel-ink")] 

Oder mit einem CSS-Selektor:

urls = [a["href"] for a in soup.select("#success-case ul li a.rel-ink")] 

Beide geben Ihnen:

['//store.taobao.com/shop/view_shop.htm?user_number_id=692020965', '//store.taobao.com/shop/view_shop.htm?user_number_id=2087799889', '//store.taobao.com/shop/view_shop.htm?user_number_id=2469022358', '//store.taobao.com/shop/view_shop.htm?user_number_id=377676745', '//store.taobao.com/shop/view_shop.htm?user_number_id=2367059695', '//store.taobao.com/shop/view_shop.htm?user_number_id=449764134', '//store.taobao.com/shop/view_shop.htm?user_number_id=698389964', '//store.taobao.com/shop/view_shop.htm?user_number_id=509711360', '//store.taobao.com/shop/view_shop.htm?user_number_id=692020965', '//store.taobao.com/shop/view_shop.htm?user_number_id=1125022434', '//store.taobao.com/shop/view_shop.htm?user_number_id=1071997040', '//store.taobao.com/shop/view_shop.htm?user_number_id=795947607', '//store.taobao.com/shop/view_shop.htm?user_number_id=509711360', '//store.taobao.com/shop/view_shop.htm?user_number_id=692020965', '//store.taobao.com/shop/view_shop.htm?user_number_id=1071997040', '//store.taobao.com/shop/view_shop.htm?user_number_id=509711360', '//store.taobao.com/shop/view_shop.htm?user_number_id=377676745', '//store.taobao.com/shop/view_shop.htm?user_number_id=2367059695', '//store.taobao.com/shop/view_shop.htm?user_number_id=2469022358'] 
Verwandte Themen