Lxml模塊

lxml: 它可以分析xml文件,html是xml的子集,所以分析html文檔可以使用正則也可以使用lxml
示例文檔

<bookstore>
        <li id='test3'> li test3</li>
        <book>
          <title>Harry Potter</title>
          <author>J K. Rowling</author>
          <year>2005</year>
          <price>29.99</price>
          <li>li test1</li>
          <li id='test2'>li test2</li>
        </book>
</bookstore>
<test>
    <li id='test3'>li test4</li>
</test>

lxml示例

實例1: 找到

Harry Potter
/bookstore/book/title
實例: 找到book裏面所有li
/bookstore/book/li
實例: 找到bookstore裏面所有li
/bookstore/book/li|/bookstore/li (|表示或的意思)
/bookstore//li //表示不管層次只要是li全部找到
實例: 找到整個文檔中的li
//li
實例:找到所有含有id屬性的li
//li[@id]
實例:找到所有含有id屬性的li,並且id的值爲test3
//li[@id=‘test3’]
實例:找到所有li的id屬性
//li/@id 得到標籤中的屬性值
//li/text() 得到標籤中的內容

一個完整示例:

from lxml import etree
html = '''    <bookstore>
            <li id='test3'> li test3</li>
            <book>
              <title>Harry Potter</title>
              <author>J K. Rowling</author>
              <year>2005</year>
              <price>29.99</price>
              <li>li test1</li>
              <li id='test2'>li test2</li>
            </book>
    </bookstore>
    <test>
        <li id='test3'>li test4</li>
    </test>'''

dom = etree.HTML(html)
ret = dom.xpath('//li/text()')
print(ret)
ret = dom.xpath('//li/@id')
print(ret)

一個完整示例:

   from lxml import etree
    html = '''    <bookstore>
                <li id='test3'> li test3</li>
                <book>
                  <title>Harry Potter</title>
                  <author>J K. Rowling</author>
                  <year>2005</year>
                  <price>29.99</price>
                  <li>li test1</li>
                  <li id='test2'>li test2</li>
                </book>
        </bookstore>
        <test>
            <li id='test3'>li test4</li>
        </test>'''

    dom = etree.HTML(html)
    ret = dom.xpath('//li[@id]')
    for li in ret:
        print(li.text)
        print(li.attrib['id'])
        print(etree.tostring(li).decode())
        print('=' * 50)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章