【发布时间】:2021-11-27 03:35:28
【问题描述】:
我怀疑这是因为我误解了 lxml 或 html 的工作原理,如果有人能在我的知识范围内填补这个空白,我将不胜感激。
我的代码是:
url = "https://prnt.sc/ca0000"
response = requests.get(url,headers={'User-Agent': 'Chrome'})
# Navigate to the correct img src.
tree = html.fromstring(response.content)
xpath = '/html/body/div[3]/div/div/img/@src'
imageURL = tree.xpath(xpath)[0]
print(imageURL)
我希望这样做会得到如下结果:
data:image/png;base64,iVBORw0KGgoAAA...((这真的很长))...Jggg==
如果我理解正确,那是图像在我的计算机上本地存储的位置。
但是当我运行代码时,我得到:
“https://prnt.sc/ca0000”
为什么这些不同?
【问题讨论】:
-
服务器可能会向不同的浏览器和/或设备(台式机、笔记本电脑、平板电脑、手机)发送不同的 HTML。它可能使用标头
User-Agent来识别浏览器,您可能必须在请求中设置正确的值 -Chrome可能还不够。这也可能是其他问题 - 许多现代页面使用 JavaScript 添加内容(并检测机器人/脚本),但请求无法运行 JavaScript。 -
在 HTML 中,我看到两个
img具有不同的scr- 其中一个具有图像链接,另一个具有https://prnt.sc/ca0000。你可能会使用错误的xpath- 最好使用id和class