2016-02-14 22 views
-2

這可能是一個重複的問題,但無法找到任何答案通過計算器搜索..處理HTML字符的HTML刮使用Python BS4

刮掉從網上一些HTML文件,但它們含有特殊字符,如「 >','<',BeautifulSoup無法處理它,拋出BeautifulSoup.find不穩定。在使用BeautifulSoup解析html之前,有沒有辦法逃避文本?

編輯: 思想這是通用的,但問題添加HTML:

<HTML> 
<HEAD><TITLE>Title</TITLE> 
</HEAD><BODY> 
<p> 
<h2>Heading 2</h2> 
<hr align=left width=75%> 
<dl><h3>Heading 3</h3> 
<p> 
<dd><a href="./ref.pl?R1"><b>R1</b></a> 
<i><b>PP</b></i>: 
<a href="./refs.pl?R2">R2</a> 
<dl> 
<dd> 
Text1 <a href="./refs.pl?T1">T1</a> 
; Text2 <a href="./refs.pl?T1">T1</a> 
<i>value<=500</i> <a href="./refs.pl?+T2">T2</a> 
; Text3 <a href="./refs.pl?T3">T3</a> 
</dl> 
Sat Feb 14 23:36:59 EST 2016 
<p></body></html> 

試圖收集所有文本值,調用DD = soup.find( 'DD')和解析dd.contents失誤出價值< = 500和Text3 ..

+0

你能給我們提供一些更具體的代碼和/或你想要抓取的網站嗎? – Seekheart

回答

0

回答我自己的問題,但有沒有更容易的方法來處理它與BeautifulSoup直接?

from tidylib import tidy_document 
doc, errors = tidy_document(htmlfile.read()) 
soup = BeautifulSoup(doc, "lxml") 

現在的HTML文檔具有<i>value&lt;=500</i>,這有助於BeautifulSoup.find從運行不穩定。

調用dd = soup.find('dd')和解析dd.contents現在提供value<=500Text3

+0

謝謝@jwodder,非常感謝。新的joinee仍然在我的方式工作 – Ray