2016-04-02 52 views
2

我正在做我的第一个python项目,并且我被美丽的垃圾卡住了......即使通过阅读文档并尝试了很多东西 - 我仍然卡住了。beautifulsoup - 如何从结果字符串中提取链接?

我解析亚马逊结果页面,并想要废除每个项目的链接。

到目前为止,我的代码是:

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) 

我的代码,我设法目标页面上的所有项目(与代码这里没有显示,我已经设法争取到项目和价格的名称),但与报废实际的链接我有问题...

所以上面的代码的输出是:

<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> 

所以,我怎么说http://www.amazon.de/gp/offer-listing/B01062AE20那里?

我试着用:

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() 
... 

但没有去...我不想愚蠢只是解析字符串...当然BS4可以做到这一点的开箱...只是..怎么样?

由于事先 贾卡

回答

2

获取元件在BeautifulSoup属性值是like accessing items in dictionaries

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

item.contents [0] .find_all( “一”,{ “类”:“一-size-small a-link-normal a-text-normal“})[0] .get(”href“) WORKED 谢谢! –

+0

@JakaM。是的,链接标记是你的情况下的'result'变量。 – alecxe

相关问题