redaiconglin 发表于 2022-5-7 14:59:25

为何获取不到需要的标签

各位老师我的代码如下
import requests
from lxml import etree
url = 'http://www.baidu.com'
headers = {
            'Host': 'tieba.baidu.com',
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36'}
response= requests.get(url,headers=headers)
ret = response.content.decode()
html = etree.HTML(ret)
li_list = html.xpath('//a[@id="aging-total-page"]')
print(li_list)
为何我获取不到a标签。
这个标签就在百度的首页下
<a id="aging-total-page" role="pagedescription" aria-label="欢迎进入 百度一下,你就知道,盲人用户进入读屏幕模式请按快捷键Ctrl加Alt加R;阅读详细操作说明请按快捷键Ctrl加Alt加问号键。" tabindex="0" href="javascript:void(0)"></a>

Twilight6 发表于 2022-5-7 15:14:27


你试着打印 ret 的文本内容,会发现没有属性值为 aging-total-page 的标签

然后我们去看下页面源码,打开开发者模式,看到确实有 aging-total-page 标签

接下来我们看着这个页面标签同时按下刷新,就会发现这个标签是后面加载过程冒出来的,说明可能是 js 加载渲染上,所以你在代码中获取不到此标签

redaiconglin 发表于 2022-5-7 15:22:22

Twilight6 发表于 2022-5-7 15:14
你试着打印 ret 的文本内容,会发现没有属性值为 aging-total-page 的标签

然后我们去看下页面源码, ...

感谢老师的解答我去试试看。

suchocolate 发表于 2022-5-7 15:24:36

浏览器看到的网页码源是经过css渲染和javascript处理之后得到的,而requests不靠其他库不会渲染和也不会执行javascript,因此requests get拿到的和浏览器的代码不一样是正常的。
页: [1]
查看完整版本: 为何获取不到需要的标签