簡體   English   中英

如何在Python中解析和提取HTML文檔中的特定元素?

[英]How to parse and extract a specific element from a HTML document in Python?

Python中有許多XML和HTML解析器,我正在尋找一種簡單的方法來提取HTML文檔的一部分,最好使用XPATH構造,但這只是可選的。

這是一個例子

src = "<html><body>...<div id=content>AAA<B>BBB</B>CCC</div>...</body></html>"

我想用id = content提取元素的整個主體,所以結果應該是: <div id=content>AAA<B>BBB</B>CCC</div>

如果不安裝新庫就可以做到這一點。

我也希望獲得所需元素的原始內容(未重新格式化)。

不允許使用regexp,因為這對於解析XML / HTML是不安全的。

要使用庫進行解析-最好的方法是BeautifulSoup,以下是它如何為您工作的摘要!

from BeautifulSoup import BeautifulSoup

src = "<html><body>...<div id=content>AAA<B>BBB</B>CCC</div>...</body></html>"
soupy = BeautifulSoup( src )

content_divs = soupy.findAll( attrs={'id':'content'} )
if len(content_divs) > 0:
    # print the first one
    print str(content_divs[0])

    # to print the text contents
    print content_divs[0].text

    # or to print all the raw html
    for each in content_divs:
        print each

是的,我已經做到了。 這樣做可能不是最好的方法,但它的工作方式類似於以下代碼。 我沒有測試

import re

match = re.finditer("<div id=content>",src)
src = src[match.start():]

#at this point the string start with your div everything proceeding it has been stripped.
#This next part works because the first div in the string is the end of your div section.
match = re.finditer("</div>",src)
src = src[:match.end()]

src現在在字符串中只有div您的after。 如果存在某些情況,那么您只需要為您的重新查找部分構建一個更高級的搜索模式即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM