python之pyQuery使用总结

什么是pyQuery

    当我们使用爬虫抓取网页后,还需要对抓取的HTML内容进行处理以获得需要的信息.pyQuery是jQuery的python实现,可以用来解析HTML内容.

安装

 我的环境:Ubuntu 14.04+python2.7
    命令:pip install pyquery

使用

 加载HTML内容

    from pyquery import pyQuery as pq
    可以从字符串,文件或URL加载HTML内容
from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><h1>Hello</h1></body></head></html>")
doc_2 = pq(filename="file_path")
doc_3 = pq(url="http://www.baidu.com")

 根据HTML标签来获得元素

from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><h1>Hello</h1></body></head></html>")
print doc_1('head')   # <head><body><h1>Hello</h1></body></head>
print doc_1('h1')   # <h1>Hello</h1>

 获取HTML块或文本块

 使用html()和text()
from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><h1>Hello</h1></body></head></html>")
print doc_1('head').html() # <body><h1>Hello</h1></body>
print doc_1('head').text()  # Hello

 从索引获取元素

 eq(index)
from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><p>test1</p><p>test2</p></body></head></html>")
print doc_1('p').eq(0).html()   # test1
print doc_1('p').eq(1).html()   # test2

    根据类名和id获取元素

from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><div class='div1'><p id='2'>test1</p></div></body></head></html>")
print doc_1('.div1').html()   # <p id="2">test1</p>
print doc_1('#2').html()   # test1

 获取属性值

from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><div class='div1'><a href='http://abc.com'>test1</a></div></body></head></html>")
print doc_1('div').attr('class')  # div1
print doc_1('a').attr('href')   # http://abc.com

 修改属性值

from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><div class='div1'><a href='http://abc.com'>test1</a></div></body></head></html>")
print doc_1('a').attr('href', 'http://www.google.com')   # 将href属性修改为google的地址

    查找嵌套元素find()

from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><div class='div1'><a href='http://abc.com'>test1</a></body></head></html>")
print doc_1('div').find('a')  # <a href="http://abc.com">test1</a>

 获取子元素

from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><div class='div1'><p id='1'>test1</p><a href='http://abc.com'>test2</a></div></body></head></html>")
print doc_1('div').children()   # <p id="1">test1</p><a href="http://abc.com">test2</a>
print doc_1('div').children('a')  # <a href="http://abc.com">test2</a>

    获取父元素

from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><div class='div1'><p id='1'>test1</p><a href='http://abc.com'>test2</a></div></body></head></html>")
print doc_1('a').parents()   # 所有的HTML内容
print doc_1('a').parents('div')  # <div class="div1"><p id="1">test1</p><a href="http://abc.com">test2</a></div>

 为元素添加类

from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><div><p id='1'>test1</p><a href='http://abc.com'>test2</a></div></body></head></html>")
print doc_1('div').addClass('div1')   # <div class="div1"><p id="1">test1</p><a href="http://abc.com">test2</a></div>

 判断元素是否有给定的类

from pyquery import PyQuery as pq

doc_1 = pq("<html><head><body><div><p id='1'>test1</p><a href='http://abc.com'>test2</a></div></body></head></html>")
print doc_1('div').hasClass('div1')   # False
print doc_1('div').addClass('div1')   # <div class="div1"><p id="1">test1</p><a href="http://abc.com">test2</a></div>
print doc_1('div').hasClass('div1')   # False

你可能感兴趣的:(python之pyQuery使用总结)