成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PyQuery解析網(wǎng)頁用法入門講解

開發(fā) 后端
在使用pyquery解析庫之前,首先簡單介紹一下pyquery然后講解如何安裝pyquery庫。Pyquery也是一個功能很強大的網(wǎng)頁解析庫,它支持對xml、html文檔進行jQuery查詢。

1. Pyquery的安裝

在使用pyquery解析庫之前,首先簡單介紹一下pyquery然后講解如何安裝pyquery庫。

  • pyquery的基礎概念

Pyquery也是一個功能很強大的網(wǎng)頁解析庫,它支持對xml、html文檔進行jQuery查詢。

  • 安裝pyquery

pyquery的安裝其實很簡單,下面介紹兩種不同的安裝方式(適用不同的操作系統(tǒng))。

  1. #方式一:pip安裝 pip install pyquery    
  2.  
  3. #方式二:wheel安裝  
  4. #下載對應系統(tǒng)版本的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/  
  5. pip install pyquery-1.4.3-py3-non-any.whl 

方式一:安裝比較簡單,通過pip install pyquery命令就可以直接安裝;

方式二:首先需要下載whl文件,然后再去安裝。

其下載鏈接為:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml。

進入這個鏈接后找到pyquery-1.4.3-py3-none-any.whl,并將其下載到本地。

2. Pyquery的使用方法

通過上述方法安裝好pyquery之后,我們開始導入pyquery,并通過一個例子去了解pyquery的基本使用方法。首先構(gòu)造了一段html源碼,然后初始化為pyquery對象。

完整代碼如下:

  1. from pyquery import PyQuery as pq 
  2. html = ''
  3. <div id = "container"
  4.     <ul> 
  5.         <li>第1個</li> 
  6.         <li><a href = "link2.html">第2個</a></li> 
  7.         <li class = "i0 active"><a href = "link3.html"><span>第3個</span></a></li> 
  8.         <li class = "i1 active"><a href = "link4.html">第4個</a></li> 
  9.         <li><a href = "link5.html">第5個</a></li> 
  10.     </ul> 
  11. </div> 
  12. ''
  13. py= pq(html) 
  • 獲取標簽元素

目標:比如我們需要獲取html中的li標簽

  1. #方式一 
  2. print(py('li')) 
  3.  
  4. #方式二 
  5. # 注意下面id 前面需要加上#,class 前面需要加上. 
  6. print(py('#container .list li')) 

這里有兩種獲取方式,第一種比較簡單,第二種方法定位更加準確。針對上述的html源碼,這兩種方式獲取的結(jié)果是一樣的,其結(jié)果如下:

  1. <li>第1個</li> 
  2. <li><a href="link2.html">第2個</a></li> 
  3. <li class="i0 active"><a href="link3.html"><span>第3個</span></a></li> 
  4. <li class="i1 active"><a href="link4.html">第4個</a></li> 
  5. <li><a href="link5.html">第5個</a></li> 
  • 查詢子級標簽元素

目標:獲取class為list的ul標簽下的所有子標簽(li標簽),其代碼如下:

  1. items = py('.list'
  2. lis = items.children() 
  3. print(lis) 

最后打印輸出的結(jié)果同上,都是把所有的li標簽打印輸出。

  • 查詢父級標簽元素

目標:獲取class為list的ul標簽的上一級標簽(div標簽),其代碼如下:

  1. items = py('.list'
  2. pa = items.parent() 
  3. print(pa) 

打印輸出結(jié)果:

  1. <div id="container"
  2.     <ul> 
  3.         <li>第1個</li> 
  4.         <li><a href="link2.html">第2個</a></li> 
  5.         <li class="i0 active"><a href="link3.html"><span>第3個</span></a></li> 
  6.         <li class="i1 active"><a href="link4.html">第4個</a></li> 
  7.         <li><a href="link5.html">第5個</a></li> 
  8.     </ul> 
  9. </div> 
  • 獲取元素信息

目標:獲取class為i0 active的a標簽元素,并提取出a標簽元素的相關信息

  1. a = py('.i0.active a'
  2. # 標簽內(nèi)容 
  3. print(a) 
  4. # 獲取屬性(兩種方式) 
  5. print(a.attr.href) 
  6. print(a.attr('href')) 
  7. # 獲取文本 
  8. print(a.text()) 
  9. # 獲取<a>標簽里的源碼 
  10. print(a.html()) 

結(jié)果:

  1. <a href="link3.html"><span>第3個</span></a> 
  2. link3.html 
  3. link3.html 
  4. 第3個 
  5. <span>第3個</span> 

3. 實戰(zhàn):抓取由關鍵字搜索的結(jié)果

內(nèi)容:抓取小說網(wǎng)站由關鍵字搜索的結(jié)果,并采集結(jié)果中小說的書名和鏈接

思路:首先在小說網(wǎng)站里面搜索關鍵字:斗羅,然后利用爬蟲抓取搜索返回的結(jié)果中小說的書名和鏈接,這過程中通過pyquery去解析網(wǎng)頁源碼,最后提取出數(shù)據(jù)。

鏈接:http://book.chenlove.cn/search.html?keyword=斗羅

在瀏覽器中訪問鏈接:

在編寫之前先分析一下網(wǎng)頁源碼:

查看源代碼,可以知道每一本書的數(shù)據(jù)都在class為bigpic-book-name的a標簽中,首先使用pyquery去解析其a標簽,然后進行循環(huán)遍歷。

完整代碼如下:

  1. from pyquery import PyQuery as pq 
  2. import requests 
  3. # 設置代理服務器 
  4. headers = { 
  5.     'User_Agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36' 
  6. #請求連接 
  7. url = "http://book.chenlove.cn/search.html?keyword=斗羅" 
  8. response = requests.get(url, headers=headers) 
  9. if response.status_code == 200: 
  10.     # 轉(zhuǎn)化為utf-8格式,不加這條語句,輸出爬取的信息為亂碼 
  11.     response.encoding = 'utf8' 
  12.     # 把網(wǎng)頁解析為pyquery對象 
  13.     py = pq(response.text) 
  14.     a_list = py('.bigpic-book-name').items() 
  15.     for i in a_list: 
  16.         # 獲取書名 
  17.         print(i.text()) 
  18.         # 獲取書名鏈接 
  19.         print(i.attr('href')) 

上一小節(jié)我們學會了如何去提取a標簽中的內(nèi)容和鏈接,同樣的這里一樣使用text()和attr()去解析內(nèi)容和鏈接。

結(jié)果:

  1. 智行斗羅 
  2. /novel/235.html 
  3. 從炸掉魂環(huán)開始的斗羅 
  4. /novel/219.html 
  5. 旅途從斗羅開始 
  6. /novel/195.html 
  7. 斗羅之卡BUG 
  8. /novel/159.html 
  9. 終極斗羅 
  10. /novel/54.html 

本文轉(zhuǎn)載自微信公眾號「Python研究者」,可以通過以下二維碼關注。轉(zhuǎn)載本文請聯(lián)系Python研究者公眾號。

 

責任編輯:武曉燕 來源: Python研究者
相關推薦

2023-12-01 08:31:20

HTML解析庫

2010-06-03 18:22:38

Hadoop

2010-05-27 17:17:37

Subversion入

2009-12-14 15:56:40

網(wǎng)頁編輯器Bluefi

2017-09-08 15:04:10

jQuery爬蟲PyQuery

2010-07-13 13:49:43

Perl foreac

2009-12-07 15:29:51

Juniper路由器入

2010-06-03 18:32:51

Hadoop

2009-11-18 14:53:59

PHP Session

2010-02-02 11:27:16

C++字符串

2009-08-04 16:33:50

ASP.NET移動開發(fā)

2010-06-11 17:59:24

UML對象圖

2010-07-15 10:22:23

Perl控制結(jié)構(gòu)

2010-07-16 16:56:01

Perl構(gòu)造函數(shù)

2010-07-16 08:47:53

Perl if語句

2010-08-12 09:11:09

Flex彈出窗口

2010-07-20 09:45:04

Perl繼承

2010-07-19 14:13:41

Perl函數(shù)

2010-07-14 15:32:21

Perl轉(zhuǎn)義字符

2010-07-16 13:10:36

Perl哈希表
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天亚洲| 国产一区二区三区四区 | 久久伊人精品一区二区三区 | 国产欧美一级二级三级在线视频 | 99国产在线| 欧美精品久久 | a精品视频 | 四季久久免费一区二区三区四区 | 亚洲 欧美 日韩在线 | 亚洲国产中文字幕 | 日韩欧美天堂 | 国外成人在线视频 | 日韩高清国产一区在线 | 二区国产 | 永久免费在线观看 | 中文字幕在线播放第一页 | 欧美精品成人一区二区三区四区 | 国产精品不卡 | 亚洲精品一区二区三区免 | 国产日韩欧美 | 男女啪啪高潮无遮挡免费动态 | 亚洲一区在线日韩在线深爱 | 久久一区精品 | 欧美高清性xxxxhdvideosex | 四季久久免费一区二区三区四区 | 欧美成人一区二区 | 欧美成人高清 | 中文字幕在线精品 | 免费黄色av网站 | 黄在线免费观看 | 伊人久久综合 | 日韩国产一区二区三区 | 日韩一区二区三区精品 | 91精品无人区卡一卡二卡三 | 国产一区二区三区不卡av | 国产a一区二区 | 成人免费精品视频 | 在线免费黄色小视频 | 欧美日韩国产精品一区 | 国内精品免费久久久久软件老师 | 免费久草 |