我正在尝试从thisisnthappiness.com网站解析HTML。为此,我使用的是Python的HTMLParser库。
我的目标是获取符合div.post
的标记之间的所有数据(表示为CSS选择器)。
到目前为止,这是我的代码:
import urllib2
from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
if tag == 'div' and ('class', 'post') in attrs:
print 'tag fits'
def main():
parser = MyHTMLParser()
resource = urllib2.urlopen('http://thisisnthappiness.com/')
parser.feed(resource.read())
if __name__ == "__main__":
main()
目前,它多次打印tag fits
。我正在中途! :)
我很难获得适合 CSS选择器的标签数据。在handle_starttag()
中,我没有看到任何从该标记获取数据的方法。在那儿?我想保存列表中标签中的数据以供进一步使用。
感谢任何建议!
答案 0 :(得分:3)
HTMLParser
是一个非常低级别的界面。您必须找到结束标记,然后处理标记之间的html。
以下是lxml.html
的内容:
import lxml.html
def main():
doc = lxml.html.parse("http://thisisnthappiness.com/").getroot()
for e in doc.cssselect("div.post"):
print e # this is an object representing the element
if __name__ == "__main__":
main()
这使您可以使用xpath,CSS选择器,etree API或DOM来查询数据,而不是重新发明轮子。