Beautiful Soup 解析 Baidu 首页失败

本文分析了一段引发HTML解析错误的代码,并指出正确的HTML书写方式。讨论了如何使用tidy等工具来修正HTML代码,以便更好地利用BeautifulSoup进行网页解析。
摘自http://groups.google.com/group/python-cn/browse_thread/thread/8ad925031a97b8b2/a782b13f321a1ff8?#a782b13f321a1ff8
Traceback (most recent call last):
  File 
"E:\e.py", line 8in <module>
    soup 
= BeautifulSoup(page.read())
  File 
"D:\Python25\lib\site-packages\BeautifulSoup.py", line 1499in __init__
    BeautifulStoneSoup.__init__(self, 
*args, **kwargs)
  File 
"D:\Python25\lib\site-packages\BeautifulSoup.py", line 1230in __init__
    self._feed(isHTML
=isHTML)
  File 
"D:\Python25\lib\site-packages\BeautifulSoup.py", line 1263in _feed
    self.builder.feed(markup)
  File 
"D:\Python25\lib\HTMLParser.py", line 108in feed
    self.goahead(
0)
  File 
"D:\Python25\lib\HTMLParser.py", line 148in goahead
    k 
= self.parse_starttag(i)
  File 
"D:\Python25\lib\HTMLParser.py", line 263in parse_starttag
    
% (rawdata[k:endpos][:20],))
  File 
"D:\Python25\lib\HTMLParser.py", line 115in error
    raise HTMLParseError(message, self.getpos())
HTMLParser.HTMLParseError: junk characters 
in start tag: u'\u767e\u5ea6\u4e00\u4
e0b id
=sb>', at line 3, column 201

出错的 HTML 代码是: 
<input type=submit value=百度一下 id=sb> 
很常见的问题,标准的HTML应该是:
<input type="submit" value="百度一下" id="sb"> 
不知道是百度出于压缩考虑,还是它的技术人员偷懒 
应该用 tidy 之类的工具修补下,然后再用 BeautifulSoup 处理 
不过正如之前我那条不被人关注的帖子中所提到的,原有多个对 tidy 的 python 封装都不好用 
张教主推荐了个自己封装的 tidy ,可以试下 

转载于:https://www.cnblogs.com/leavingme/archive/2009/08/13/1545530.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值