Python lxml 爬虫?

1 投票
5 回答
3663 浏览
提问于 2025-04-15 11:21

我需要用Python来解析一些HTML内容。经过一番研究,我发现lxml是最合适的选择,但我很难找到能帮助我实现目标的例子。这就是我来这里的原因。我需要从一个页面上抓取所有可见的文本,去掉所有的标签和JavaScript,只留下能看到的文本。听起来很简单,对吧?我之前用HTMLParser做过,但它对JavaScript的处理不太好。

class HTML2Text(HTMLParser.HTMLParser):
    def __init__(self):
        HTMLParser.HTMLParser.__init__(self)
        self.output = cStringIO.StringIO()

    def get_text(self):
        return self.output.getvalue()

    def handle_data(self, data):
        self.output.write(data)

def ParseHTML(source):
    p = HTML2Text()
    p.feed(source)
    text = p.get_text()
    return text

有没有什么建议,可以用lxml来实现这个,或者用HTMLParser的更好方法?其实用HTMLParser最好,因为这样不需要额外的库。谢谢大家!

Scott F.

5 个回答

0

BeautifulSoup(http://www.crummy.com/software/BeautifulSoup/)通常是处理Python网页抓取问题的最佳选择。

2

scrape.py 可以帮你完成这个任务。

使用起来非常简单:

import scrape
s = scrape.Session()
s.go('yoursite.com')
print s.doc.text

在这个视频中,大约2分40秒的时候,有一个来自scrape.py创作者的精彩概述,快去看看吧:pycon.blip.tv/file/3261277

4

我知道的没有哪个屏幕抓取库能很好地处理JavaScript,因为这实在太难了。JavaScript可以动态地、根据条件改变HTML的结构,真的是很难预测它会以什么方式来改动。

撰写回答