Python lxml 爬虫?
我需要用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的结构,真的是很难预测它会以什么方式来改动。