1. lxml 的element.text返回的是这个元素第一个节点的内容,经常第一个节点下面还有子节点,所以这个不经常使用



2.lxml.html中的document_fromstring函数是返回一个完整的html网页,即第一个标签就是<html>

fromstring不论是完整html和碎片html都可以处理,所以常用的是fromstring

官方文档中也有详细说明http://lxml.de/lxmlhtml.html


3.lxml对处理的字符必须要求是unicode格式

如果网页源代码是utf-8格式,可以用decode('utf-8', 'ignore'),gbk可以用decode('gbk','ignore')


4.清理HTML


from lxml.html.clean import Cleaner

cleaner = Cleaner(page_structure=False, links=False)

print cleaner.clean_html(html)


具体参数见文档http://lxml.de/api/lxml.html.clean.Cleaner-class.html

这个相当有用


5.text_content():

Returns the text content of the element, including the text content of its children, with no markup.

返回此元素下所有标签的文本,不包含html标签

官方文档http://lxml.de/lxmlhtml.html

参考http://www.tuicool.com/articles/yaemae


我个人用这个时,有时会有一些script标签,所以还是要过滤一下哈


6.tostring函数

在lxml.html和lxml.etree中都有,etree中的功能更多一些

注意:tostring返回的html都经过escape的,所以有时需要再unescape一下


7.获取innerHTML

def innerHTML(node): 
    buildString = ''
    for child in node:
        buildString += html.tostring(child)
    return buildString

来源

http://stackoverflow.com/questions/15343218/get-divs-html-content-with-lxml