我正在做我的第一个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可以开箱即用......只是......怎么样?
提前谢谢, 贾卡答案 0 :(得分:2)
获取BeautifulSoup
中的元素属性值为like accessing items in dictionaries:
result["href"]
result.get("href")