Python里怎么用find找出HTML里需要的资料(不用re模块和beautifulSoup)

html-css017

Python里怎么用find找出HTML里需要的资料(不用re模块和beautifulSoup),第1张

你可以看一个python自带的源代码。叫sgmlparser.py, 那个解析方法又叫平面解析方法。参考它的算法用find就可以解析出所要的资料。

其实用find速度更快。按理比re要快不少。 只需要找到头与尾就可以。 只是因为find相对比较固定,没有re那么灵活,所以适应性差些。 经常要变更。比如你找一个class="id_xxx"这样的内容用find就很费劲。

你先做一个类。它能封装你查找到起点,终点。查找区间。然后内部使用find做查找。实现类似findall, search, subplace, like等功能。其实也不难。

只是如果做得太复杂了。效率可能受影响,那么你可以使用cython做成C语言的格式,效率就不受影响了。

$(data).find(“#page_nav a”).attr(“href”)

表示从data节点开始向内查找id为page_nav下的a标签,data必须是一个可供选择器选择的表达式,例如标签名、ID、Class等。

因此你可以这样写:$(“#page_nav a”).attr(“href”)或$(“#page_nav”).find("a").attr(“href”)

如果还是不行,你可以用firebug或chrome的开发人员工具,打断点或用console.dir输入你选择的对象,所有问题一目了然。

//查找html文档中的超链接元素

$a = $html->find('a')

//查找文档中第(N)个超链接,如果没有找到则返回空数组.

$a = $html->find('a', 0)

// 查找id为main的div元素

$main = $html->find('div[id=main]',0)

// 查找所有包含有id属性的div元素

$divs = $html->find('div[id]')

// 查找所有包含有id属性的元素

$divs = $html->find('[id]')