beautifulsoup - 如何从结果字符串中提取链接?

时间:2016-04-02 12:22:46

标签: python beautifulsoup

我正在做我的第一个python项目,我遇到了漂亮的麻烦......即使在通过文档阅读并尝试了许多事情之后 - 我仍然被卡住了。

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

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

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可以开箱即用......只是......怎么样?

提前谢谢, 贾卡

1 个答案:

答案 0 :(得分:2)

获取BeautifulSoup中的元素属性值为like accessing items in dictionaries

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