利用PyQuery获取HTML指定标签内容

安装

sudo pip install pyquery

例子

from pyquery import PyQuery
import urllib2

page = urllib2.urlopen("http://www.lzu.edu.cn")
text = unicode(page.read(), "utf-8")
doc = PyQuery(text)
for event in doc('.r li'):
    event = PyQuery(event)
    #loc = event.find('.h').text()
    time = event.text().encode('utf-8')
    #name = event.find('title').text()
    #print 'name: %s' % name
    print '名字 : %s' % time
    #print 'location : %s' % loc
    print '----------------------'

注意event里是unicode,在内存中运算的一定是固定2字节的unicode,存储要转为变字节的utf-8。

当然还有别的模块也可以用,如

#!/usr/bin/env python
#-*- coding: utf8 -*-
from HTMLParser import HTMLParser
from htmlentitydefs import name2codepoint
import urllib2


class MyHTMLParser(HTMLParser):
    def __init__(self):
        HTMLParser.__init__(self)
        self._flag = ''

    def handle_starttag(self, tag, attrs):
        if tag == 'h3' and attrs.__contains__(('class','event-title')):
            self._flag = 'event-title'
        if tag == 'time':
            self._flag = 'time'
        if tag == 'span' and attrs.__contains__(('class','event-location')):
            self._flag = 'event-location'
    def handle_data(self, data):
        if self._flag == 'event-title':
            print '会议名称: %s' %data
            self._flag = ''
        #if self._flag == 'time':
        #   print '会议时间: %s' %data
        if self._flag == 'event-location':
            print '会议地点: %s' %data
            print '-------------------'
            self._flag = ''


page = urllib2.urlopen('https://www.python.org/events/python-events/').read()
parser = MyHTMLParser()
parser.feed(page)

References

[1].http://www.douban.com/note/208670234/

[2].http://blog.csdn.net/mindmb/article/details/7898528

[3].http://pythonhosted.org/pyquery/api.html

你可能感兴趣的:(利用PyQuery获取HTML指定标签内容)