zyj1214 发表于 2023-11-5 19:20:47

关于爬虫xpath查询问题?

#使用的是别人的代码
import requests
from lxml import etree
#伪装UA
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.54"
}


#发送请求
a = requests.get("https://www.52pojie.cn/",headers=headers).text
#解析
b = etree.HTML(a)

for i in range(1,5):
        #这段代码怎么理解b.xpath(f"//td[@valign='top'][{i}]//a//text()") 中括号里的 @ 代表什么意思,其他代码都理解
        #就是这段代码不太理解。。最好通俗点讲,,多谢!!
    c = b.xpath(f"//td[@valign='top'][{i}]//a//text()")
         
    for i in c:
      print(i)

isdkz 发表于 2023-11-5 19:21:09

在这段代码中, b.xpath(f"//td[@valign='top'][{i}]//a//text()")是使用XPath语法来查询HTML文档中特定元素的文本内容。

在XPath中, //表示选择文档中的所有节点, td表示选择所有的td标签, [@valign='top']表示选择具有valign属性值为'top'的td标签, [ i]表示选择第i个匹配的td标签。

//a表示选择td标签下的所有a标签, //text()表示选择所有的文本节点。

因此, b.xpath(f"//td[@valign='top'][{i}]//a//text()")表示选择具有valign属性值为'top'的第i个td标签下的所有a标签的文本内容。

最后,使用for循环遍历c中的每个元素,并打印出来。

Mike_python小 发表于 2023-11-5 19:22:42

在这段代码中,b.xpath(f"//td[@valign='top'][{i}]//a//text()")是使用XPath语法从解析后的HTML文档中提取数据。

具体来说,b是通过etree.HTML(a)将获取的网页内容解析为一个Element对象。然后,b.xpath()方法用于在解析后的HTML文档中执行XPath查询。

在这个例子中,//td[@valign='top'][{i}]//a//text()是XPath表达式。让我们逐步解释它:

- //:表示从当前节点开始,选择所有符合条件的节点。
- td:选择所有<td>标签。
- [@valign='top']:选择具有valign属性且属性值为'top'的<td>标签。
- :选择第i个匹配的节点。
- //a:选择所有子孙节点中的<a>标签。
- //text():选择所有文本节点。

所以,b.xpath(f"//td[@valign='top'][{i}]//a//text()")的作用是从解析后的HTML文档中,选择第i个 valign属性为'top'的<td>标签下的所有子孙节点中的文本内容。

最后,使用for循环遍历提取到的文本内容,并打印出来。

希望以上解释能够帮助您理解这段代码的含义。如果您还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 关于爬虫xpath查询问题?