答案 0 :(得分:3)
这需要阅读很多 - 也许你可以分解成更小的具体问题。
关于lxml,here是一些例子。 official documentation也非常好 - 花时间研究这些例子。邮件列表非常活跃。
关于BeautifulSoup,lxml是more efficient,根据我的经验,可以比BeautifulSoup更好地处理损坏的HTML。缺点是lxml依赖于C库,因此可能更难安装。
答案 1 :(得分:2)
lxml绝对是目前用于html解析的首选工具。
这里有一个lxml备忘单,上面有很多答案:
http://scraperwiki.com/docs/contrib/python_lxml_cheat_sheet/
您编写的那批代码按原样运行,并在ScraperWiki编辑窗口中运行。 http://scraperwiki.com/scrapers/andreas_stackoverflow_example/edit/
通常链接的形式如下: < a href =“link”> title< / a>
通过lxml解析后,您可以使用以下命令获取链接: a.attrib.get(的 “href”) 和文字使用 a.text
但是,在这种特殊情况下,链接的形式如下: < a href =“link”> <跨度> < /跨度>标题< / A> 所以值a.text只代表'< a href =“link”>'之间的字符并且首先是'< span>'。
但您可以使用以下代码通过递归子元素(在本例中为< span>)来展平它:
def flatten(el):
result = [ (el.text or "") ]
for sel in el:
result.append(flatten(sel))
result.append(sel.tail or "")
return "".join(result)