这可能是一个重复的问题,但无法通过stackoverflow找到任何答案..
从网络上抓取了一些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(&#39; dd&#39;)并解析dd.contents,错过了值&lt; = 500和Text3 ..
答案 0 :(得分:0)
回答我自己的问题,但有没有更简单的方法直接使用BeautifulSoup处理它?</ p>
from tidylib import tidy_document
doc, errors = tidy_document(htmlfile.read())
soup = BeautifulSoup(doc, "lxml")
现在HTML文档已<i>value<=500</i>
,这有助于BeautifulSoup.find
行为不正常。
调用dd = soup.find('dd')
并解析dd.contents
现在提供value<=500
和Text3
。