我正在創建一個Web爬蟲程序,並使用HTMLParser模塊來解析HTML文檔中的鏈接。如果解析器遇到錯誤標記,則會引發解析錯誤並終止應用程序。由於爬蟲遍歷整個網頁,所以這個錯誤經常被提出。如何在解析錯誤後繼續解析HTMLParser?
在python.org bug部分,有人已經提出了這個問題。你可以看看那here。問題是我不知道如何使用提供的「補丁」,但我不明白這些評論。
我想覆蓋HTMLParser模塊的默認行爲,以允許它在解析錯誤後繼續解析。
我正在創建一個Web爬蟲程序,並使用HTMLParser模塊來解析HTML文檔中的鏈接。如果解析器遇到錯誤標記,則會引發解析錯誤並終止應用程序。由於爬蟲遍歷整個網頁,所以這個錯誤經常被提出。如何在解析錯誤後繼續解析HTMLParser?
在python.org bug部分,有人已經提出了這個問題。你可以看看那here。問題是我不知道如何使用提供的「補丁」,但我不明白這些評論。
我想覆蓋HTMLParser模塊的默認行爲,以允許它在解析錯誤後繼續解析。
您應該使用BeautifulSoup而不是HTMLParser。 BeautifulSoup更健壯。
美麗的湯不會嗆,如果你給它壞標記。它產生一個解析樹,與您的原始文檔大致相同。這通常足夠收集你需要的數據並逃跑。
我自己不使用HTMLParser,但是你能不能把你的語句放在try/except塊中?
try:
myval = HTMLParser.flimsyFunction()
except HTMLParser.ParseError:
myval = None
有一些博客和網頁不希望自己的網頁進行掃描,並通過機器人和解析器解析方案誰也。他們希望許多解析器給出錯誤情況。
很多時候,它寫在網頁的代碼
document.write('<sci'+<pt'...)
以這種方式通過JavaScript的用戶嘗試插入代碼,但在這整個飼料被設置爲解析解析器給出了一個錯誤說法一個「壞標籤遇到」並停止。
解決這個問題的最好辦法是分析只是刪除所有的JavaScript代碼的情況下,你只需要內容之前,你會工作得很好:)
這只是糟糕的書面頁面,沒有說明可以對任何瀏覽器做什麼,更不用說糟糕的屏幕閱讀器和其他可訪問的瀏覽器。 – Skuld 2012-01-11 10:51:01
但問題是,它不會繼續解析相同的HTML文檔。它將進入下一頁。我希望它儘可能多地解析文檔。 – blazar 2011-04-20 16:01:08