import requests
from lxml import html
with requests.Session() as c:
url = 'http://www.dell.com/support/home/us/en/04/product-support/servicetag/18lm9h2/warranty'
payload = {'ref': 'captchasuccess'}
headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36'}
page = c.get(url, params=payload, headers=headers)
tree = html.fromstring(page.content)
title = tree.xpath('//*[@id="pd-support-banner"]/div/div/div/div/h1/span/text()')
warranty = tree.xpath('//*[@id="printdivid"]/div/div[2]/table[2]/tbody/tr/td[2]/text()')
print(title)
print(warranty)
亲爱的Python社区,
我正在尝试使用python获取我的dell项目的保修信息。当我在浏览器上粘贴以下网址:“http://www.dell.com/support/home/us/en/04/product-support/servicetag/18lm9h2/warranty?ref=captchasuccess”时,我可以毫无问题地获得保修信息。但是,当我使用上面的代码获得保修信息时,它会给我一个空列表。我知道上面的代码是正确的,因为它成功地给了我项目的标题。但它没有给我保修信息。你们有什么建议吗?我认为自己是Python的新手,非常感谢他解释为什么它不起作用。
问候!
答案 0 :(得分:1)
更改此行:
tree = html.fromstring(page.content)
到此:
print(page.content)
并查看html。
保修信息被锁定在CAPTCHA验证检查后面。
要获得保修信息,您必须编写一个可以检测/解决/提交CAPTCHA的程序。