Python中XPath相关问题求解答,谢谢大佬们!
零基础学<font class="skcolor_ljg">Python</font>(全彩版) 怎么吧这个标签里的汉字用 xpath 全部提取出来。 谢谢大佬们。
Python中XPath相关问题求解答,谢谢大佬们!
<em>零基础学<font class=“skcolor_ljg”>Python</font>(全彩版)</em>
没写全。。
帖子标题有点宽泛,没具体说遇到啥XPath问题。
是解析网页时路径写不对,还是用lxml库提取不到数据?
如果是路径问题,记得检查标签和属性是否匹配,浏览器的“检查”里可以直接复制XPath,但有时动态内容需要调整。
用lxml的话,代码通常长这样:
from lxml import etree
html = """
<html>
<body>
<div id="content">目标文本</div>
</body>
</html>
"""
tree = etree.HTML(html)
result = tree.xpath('//div[@id="content"]/text()')
print(result[0] if result else '没找到')
如果问题更具体,比如命名空间、相对路径或跨级查找,把错误代码和网页片段贴出来才好针对性解决。
一句话建议:贴出你的代码和想提取的网页结构,问题更容易定位。
em//text()
这样行嘛?
chrome 控制台右键 copy wiht xpath 这个没给文档结构写了哪里准哦
normalize-space(.//em)
function getElementByXpath(path) {
return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
var text = getElementByXpath("//font[@class=‘skcolor_ljg’]/text()")
不行的呀,这样提取不出来 python。
from lxml import etree
html = '<em>零基础学<font class=“skcolor_ljg”>Python</font>(全彩版)</em>'
print(etree.HTML(html).xpath(‘string(//em)’))
零基础学 Python (全彩版)
用正则,这样就得到两个问题啦🤣
是的 我决定用正则了。
是的,我决定用正则了。
其实昨天试了一下用 xpath (“string(//font[@class=‘skcolor_ljg’])”)可以提取出来。
//em/text()[2]
修正楼上。把[2]去掉。
>>> from lxml import etree
>>> html = ‘<em>零基础学<font class=“skcolor_ljg”>Python</font>(全彩版)</em>’
>>> doc = etree.fromstring(html)
>>> doc.xpath(’//em//text()’)
[‘零基础学’, ‘Python’, ‘(全彩版)’]


