帮助(或建议)我开始使用lxml

时间:2011-04-22 15:49:57

标签: python screen-scraping lxml

2 个答案:

答案 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)