日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python pyquery库_python解析HTML之:PyQuery库的介绍与使用

發布時間:2024/8/23 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python pyquery库_python解析HTML之:PyQuery库的介绍与使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

Python關于爬蟲的庫挺多的,也各有所長。了解前端的也都知道, jQuery 能夠通過選擇器精確定位 DOM 樹中的目標并進行操作,所以我想如果能用 jQuery 去爬網頁那就 cool 了。

就搜了下看 Python 有沒有與 DOM 相關的庫什么的,還真找到了—— PyQuery !

PyQuery簡介

pyquery相當于jQuery的python實現,可以用于解析HTML網頁等。它的語法與jQuery幾乎完全相同,對于使用過jQuery的人來說很熟悉,也很好上手。

引用作者的原話就是:

“The API is as much as possible the similar to jquery.” 。

安裝

使用 pip 或者 easy_install 都可以。

注意:由于 pyquery 依賴于 lxml ,要先安裝 lxml ,否則會提示失敗。

安裝pyquery:easy_install pyquery 或者pip install pyquery;

驗證:輸入 import pyquery 回車不報錯即安裝成功;

初始化

有 4 種方法可以進行初始化:

可以通過傳入 字符串、lxml、文件 或者 url 來使用PyQuery。

from pyquery import PyQuery as pq

from lxml import etree

d = pq("")#傳入字符串

d = pq(etree.fromstring(""))#傳入lxml

d = pq(url='http://google.com/') #傳入url

d = pq(filename=path_to_html_file) #傳入文件

現在,d 就像 jQuery 中的 $ 一樣了。

示例

通過一個簡單的例子快速熟悉 pyquery 的用法,傳入文件 example.html,內容如下:

first section111117-01-28 22:51second section222217-01-28 22:53

python 程序:

# -*- coding: utf-8 -*-

from pyquery import PyQuery as pq#引入 PyQuery

doc = pq(filename='example.html')# 傳入文件 example.html

print doc.html() # html()方法獲取當前選中的 html 塊

print doc('.item-1') # 相當于 class 選擇器,選取 class 為 item-1 的 html 塊

data = doc('tr') # 選取

元素

for tr in data.items():# 遍歷 data 中的

元素

temp = tr('td').eq(2).text() # 選取第3個

元素中的文本塊

print temp

運行結果:

# print doc.html()

first section111117-01-28 22:51second section222217-01-28 22:53

# print doc('.item-1')

second section222217-01-28 22:53

# print tr('td').eq(2).text()

17-01-28 22:51

# print tr('td').eq(2).text()

17-01-28 22:53

操作

1、.html() 和.text():獲取相應的 HTML 塊或者文本內容,

p=pq("

Hello World!")

print p('head').html()# 獲取相應的 HTML 塊

print p('head').text()# 獲取相應的文本內容

'''輸出:

hello

Hello World!

'''

2、.('selector'):通過選擇器來獲取目標內容,

d = pq("

test 1

test 2

")

print d('div').html()# 獲取

元素內的 HTML 塊

print d('#item-0').text()# 獲取 id 為 item-0 的元素內的文本內容

print d('.item-1').text()# 獲取 class 為 item-1 的元素的文本內容

'''輸出:

test 1

test 2

test 1

test 2

'''

3、.eq(index):根據索引號獲取指定元素(index 從 0 開始),

d = pq("

test 1

test 2

")

print d('p').eq(1).text()# 獲取第二個 p 元素的文本內容,

'''輸出

test 2

'''

4、.find():查找嵌套元素,

d = pq("

test 1

test 2

")

print d('div').find('p') # 查找

內的 p 元素

print d('div').find('p').eq(0) # 查找

內的 p 元素,輸出第一個 p 元素

'''輸出:

test 1

test 2

test 1

'''

5、.filter():根據 class、id 篩選指定元素,

d = pq("

test 1

test 2

")

print d('p').filter('.item-1') # 查找 class 為 item-1 的 p 元素

print d('p').filter('#item-0') # 查找 id 為 item-0 的 p 元素

'''輸出:

test 2

test 1

'''

6、.attr():獲取、修改屬性值,

d = pq("

test 1

test 2")

print d('p').attr('id') # 獲取

標簽的屬性 id

print d('a').attr('class','new')# 修改 標簽的 class 屬性為 new

'''輸出:

item-0

test 2

'''

7、其他操作:

.addClass(value):添加 class;

.hasClass(name):判斷是否包含指定的 class,返回 True 或 False;

.children():獲取子元素;

.parents():獲取父元素;

.next():獲取下一個元素;

.nextAll():獲取后面全部元素塊;

.not_('selector'):獲取所有不匹配該選擇器的元素;

for i in d.items('li'): print i.text():遍歷 d 中的 li 元素;

結語

以上的操作對于日常爬取一些小數據資料,基本足夠使用了。當然,PyQuery 還有很多其他內容,這里就不做說明了,如果需要了解更多關于 PyQuery 的內容的可以去查看官方文檔。

官方文檔是英文的,但也比較容易閱讀和理解。我找到了一個中文的教程網站,這里也提供出來。

總結

以上是生活随笔為你收集整理的python pyquery库_python解析HTML之:PyQuery库的介绍与使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。