LXML网页抓取,格式错误html
问题描述:
我试图从这个网站上刮掉文章文本http://sana.sy/eng/21/2013/01/07/pr-460536.htm,但它的HTML格式不正确。任何人都可以告诉我如何正确使用它。LXML网页抓取,格式错误html
this is the code
import urllib2
from lxml import etree
import StringIO
speachesurls = ["http://sana.sy/eng/21/2013/01/07/pr-460536.htm", "http://sana.sy/eng/21/2012/06/04/pr-423234.htm", "http://sana.sy/eng/21/2012/01/12/pr-393338.htm"]
# scrape the speaches
for url in speachesurls:
result = urllib2.urlopen(url)
html = result.read()
parser = etree.HTMLParser()
tree = etree.parse(StringIO.StringIO(html), parser)
xpath = "//html/body/table[3]/tbody/tr[3]/td[4]/table[2]/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr[2]/td/div/table/tbody/tr[2]/td/div/p"
a = tree.find(xpath)
print a.text_content()
答
这不是与LXML或畸形的HTML,LXML的HTML解析器可以处理的问题。
你的代码工作正常,只是你的xpath表达式不匹配任何东西,所以a
将是None
。
使用不同的解析器? BeautifulSoup可以使用不同的解析器,并为它们提供相同的API(尽管没有XPath支持)。 'html5lib'可以更好地完成页面。 – 2013-04-21 18:12:56