这是我的代码:
import bs4
from soupselect import select
soup = bs4.BeautifulSoup('<body><p>text</p></body>')
res = select(soup,'p')
我想有这样的东西将打印为流程:
print res[0].getsource()
元素在源文本处的偏移量,长度为
答案 0 :(得分:2)
使用soupselect
或BeautifulSoup无法完成您想要的任务;汤树不跟踪原始源偏移; HTML解析器在构建树时不会传递此信息。
此外,树构建器修复破坏了HTML; html5lib
解析器会在必要时插入缺少的HTML元素,例如<html>
,<head>
,<body>
和<tbody>
元素。
您不应该将soupselect
项目与BeautifulSoup 4一起使用;它是为版本3设计的。相反,使用built-in Element.select()
method进行CSS选择元素。
答案 1 :(得分:2)
我明白你所追求的是什么,但就像Martijn Pieters所说,它不是BeautifulSoup追踪的东西。
话虽这么说,可以使用标准python功能执行此操作,但只给出一些约束:您要查找的标记应该是唯一的(或者您应该在{{ 1}}字符串对象的方法。此外,你应该考虑到破坏的HTML将尽可能好地修复,所以如果原来的HTML被破坏了,不要指望一个好的匹配。
find
但这确实会对您正在寻找的标签造成大量限制。它应该给你一个开始。