利用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

时间: 2024-10-04 11:00:23

利用PyQuery获取HTML指定标签内容的相关文章

利用JavaScript获取页面文档内容

JavaScript的document对象包含了页面的实际内容,所以利用document对象可以获取页面内容,例如页面标题.各个表单值. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>js基础</title> 6 7 </head> 8 9 <body> 10

javascript中innerHTML 获取或替换html内容

innerHTML 属性用于获取或替换 HTML 元素的内容,语法为Object.innerHTML其中1.Object是获取的元素对象,如通过document.getElementById("ID")获取的元素:2.注意书写,innerHTML区分大小写.我们通过id="light"获取<div> 元素,并将元素的内容输出和改变元素内容,代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head>

php匹配指定标签的内容

php匹配指定div内容,在用php编写采集程序的时候,抓取到的网页数据有时候我们只需要一小段标签内容,怎么才能冲html代码中提取出来呢,这里提供一个函数示例,实现php匹配任意html标签内的所有内容: /** * 匹配任意id的html标签内容 *  */ function getWebTag($tag_id,$tag='div',$data=false){              $charset_pos = stripos($data,'charset');         if($

jQuery如何获取当前指定元素的标签名称

如何获取当前指定元素的标签名称:关于获取标签名称的在实际应用中不常见,或许您永远用不上,不过这里仅仅是介绍一种方法,感兴趣可以看一下,如果不感兴趣直接略过就可以了.代码实例如下: <script type="text/javascript"> $(document).ready(function(){ alert($("#testInput")[0].tagName); }) </script> </head> <body&

用xpath提取xml文档指定标签的内容

1 <?xml version="1.0" encoding="UTF-8"?> 2 <书架> 3 <书> 4 <书名 name="vvvb">何茂赟自传</书名> 5 <作者>何茂赟</作者> 6 <售价>500.00</售价> 7 <售价>1234元</售价><售价>1234元</售价>&

利用RandomAccessFile类在指定文件指定位置插入内容

package File; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; /*利用RandomAccessFile类在指定文件指定位置插入内容.*/ public class InsertContent { public static void ins

【实例】正则表达式利用grep和sed处理日志内容,获取所需的内容

[实例]正则表达式利用grep和sed处理日志内容, 获取所需的内容 app.log文件内容: 2014-09-11 00:00:01,516 INFO [com.tt.bb.thread.Control] - Socket连接:/182.105.83.33:532172014-09-12 10:00:06,555 INFO [com.tt.bb.thread.Control] - Socket连接:/182.113.83.51:53249 2014-09-13 20:00:11,587 INF

jquery 中获取input指定name的标签对象

jquery 中获取input指定name的标签对象,用$("input[name^='?????']"); 这里name^='?????'中的 ^ 什么用? 表示name的值是以???开头的元素 比如$("input[name^='hi']")就会选择以下的元素<input type ="text" name ="hiworld" / > ^开头表示 name 以 ?????开头的 类似的还有$ 结尾* 包含!

用正则表达式替换指定标签中的内容

用正则表达式替换指定标签中的内容,也是在工作中遇到的就顺手记了下来 string sXML = "ABCDEFCSF<p>123123</p>KOPL";//现在我要去掉P标签中的内容,实现 ABCDEFCSFKOPL这样的效果. 引入:using System.Text.RegularExpressions; Regex rg = new Regex("<pict>.*</pict>"); sXML = rg.Rep