我正在寻找从
获取href的xpath<a class="a-link-normal s-access-detail-page a-text-normal" title="Nikon Coolpix L330 - 20.2 MP Digital Camera with 26x zoom 35mm NIKKOR VR lens and FULL HD 720p (Black)" href="https://rads.stackoverflow.com/amzn/click/com/B00HQDBLDO" rel="nofollow noreferrer"><h2 class="a-size-base s-inline s-access-title a-text-normal">Nikon Coolpix L330 - 20.2 MP Digital Camera with 26x zoom 35mm NIKKOR VR lens and FULL HD 720p (Black)</h2></a>
我尝试了以下代码:
url = "http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=digital+camera&rh=i%3Aaps%2Ck%3Adigital+camera"
page = requests.get(url)
tree = html.fromstring(page.text)
hrefs = tree.xpath('//*/a/@href')
for href in hrefs:
if "keywords=digital+camera" in href:
print href
此处没有任何内容。
我不确定xpath是否可以这样做?这是链接:http://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=digital+camera
答案 0 :(得分:0)
尝试这个..但是如果你尝试不同的东西然后问问你是否在某个地方被击中它总是好的。
//a[@title='Nikon Coolpix L330 - 20.2 MP Digital Camera with 26x zoom 35mm NIKKOR VR lens and FULL HD 720p (Black)']
答案 1 :(得分:0)
实际问题不是&#34;如何通过xpath&#34;来获取链接,但是&#34;如何获取包含需要由xpath&#34;检索的链接的HTML代码。 / p>
您在浏览器中看到的amazon页面是由它构建的,带有几个额外的异步调用并执行javascript。您在page.text
中获得的HTML与您在浏览器中看到的完全不同。它不包含所需的链接,因为requests
不是浏览器,至少没有内置的javascript引擎。
这里最简单的解决方案是在selenium
的帮助下实现真正的浏览器自动化:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=digital+camera')
for link in driver.find_elements_by_xpath('//a[contains(@href, "keywords=digital+camera")]'):
print link.get_attribute('href')
driver.close()