我有以下代码:
*** REST OF CODE OMITTED ***
try:
fullURL = blitzurl + movie
opener.open(blitzurl)
urllib2.install_opener(opener)
request = urllib2.Request(fullURL)
requestData = urllib2.urlopen(request)
htmlText = BeautifulSoup(requestData.read())
#panel = htmlText.find(match_class(["panelbox"]))
#table = htmlText.find("table", {"id" : "scheduletbl"})
print htmlText
blah....
except Exception, e:
print str(e)
print "ERROR: ERROR OCCURED IN MAIN"
我试图获取id为“scheduletbl”的表的内容(该表位于div中一个名为“panelbox”的类
html代码如下所示:
^{pr2}$我遇到的问题是,当我试图根据div id提取内容时,它会在中间被切断(我猜是因为不正确的结束标记)。在
当我试图基于(使用其id)提取内容时,也会发生这种情况。它也会在中间被切断,因为有一个,它不应该在那里。在
解决这个问题最好的办法是什么?我无法控制这些数据,因为它是从某个网站上删除的。在
如果您想检查哪个工具/库最适合您执行此任务,可以尝试使用https://scraperwiki.com/-。在
有一个选项可以使用html5lib、pyquery、bs4等(测试简单)
你可以试试beautifulsoup:
其中html是您的内容
BS应该擅长处理糟糕的html。。。在
如果涉及换行符,则执行dotall。这是丑陋而非美丽的方式
如果使用python默认附带的解析器,不正确的结束标记可能会产生问题。正如Beautiful soup文档中所说的那样:不是非常宽大(在Python2.7.3或3.2.2之前)。在
因此,如果您使用之前的版本,您可以安装lxml的HTML解析器,它更为宽松
或者,如果您想要与浏览器相同的html解析,您可以安装html5lib解析器
^{pr2}$它们可能会更好地解析HTML,并对错误的标记关闭有弹性。Beautiful soup会自动选择您安装的最佳解析器。在
相关问题 更多 >
编程相关推荐