有如下代码:
(随便写的,不要在乎 script 节点的意义,做位置参照而已)
import lxml.html
import lxml.etree
text = '''
<html>
<body>
<div>
<p>我不是你需要的文本</p>
</div>
<div>
<script type="text/javascript">
console.log("Hello world")
</script>
<p>我是你需要的文本</p>
</div>
</body>
</html>
'''
doc = lxml.html.fromstring(text)
body = doc.xpath("/html/body")[0]
divs = body.xpath("div")
for div in divs:
scripts = div.xpath("script[@type=\"text/javascript\"]")
if scripts is not None:
ps = div.xpath("p")
p = ps[0]
print(p.text)
本意是通过 scripts is not None 匹配到第二个 div 节点,但意外的是两个 div 均匹配成功
如果输出 scripts,还都会得到 script 节点
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.