突出显示BeautifulSoup4 soupselect中的结果源

时间:2015-01-25 14:52:38

标签: python beautifulsoup

这是我的代码:

import bs4
from soupselect import select

soup = bs4.BeautifulSoup('<body><p>text</p></body>')
res = select(soup,'p')

我想有这样的东西将打印为流程:

print res[0].getsource()

元素在源文本处的偏移量,长度为

2 个答案:

答案 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

但这确实会对您正在寻找的标签造成大量限制。它应该给你一个开始。