日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
PyQuery解析網(wǎng)頁用法入門講解

1. Pyquery的安裝

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

  • pyquery的基礎(chǔ)概念

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

  • 安裝pyquery

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

 
 
 
 
  1. #方式一:pip安裝 pip install pyquery    
  2.  
  3. #方式二:wheel安裝  
  4. #下載對應(yīng)系統(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。

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

2. Pyquery的使用方法

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

完整代碼如下:

 
 
 
 
  1. from pyquery import PyQuery as pq 
  2. html = ''' 
  3.  
  4.     
       
    •         
    • 第1個
    •  
    •         
    • 第2個
    •  
    •         第3個
    •  
    •         第4個
    •  
    •         
    • 第5個
    •  
    •     
     
 
  • ''' 
  • py= pq(html) 
    • 獲取標(biāo)簽元素

    目標(biāo):比如我們需要獲取html中的li標(biāo)簽

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

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

     
     
     
     
    1. 第1個
    2.  
    3. 第2個
    4.  
    5. 第3個
    6.  
    7. 第4個
    8.  
    9. 第5個
    10.  
    • 查詢子級標(biāo)簽元素

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

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

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

    • 查詢父級標(biāo)簽元素

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

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

    打印輸出結(jié)果:

     
     
     
     
    1.  
    2.     
         
      •         
      • 第1個
      •  
      •         
      • 第2個
      •  
      •         第3個
      •  
      •         第4個
      •  
      •         
      • 第5個
      •  
      •     
       
     
    • 獲取元素信息

    目標(biāo):獲取class為i0 active的a標(biāo)簽元素,并提取出a標(biāo)簽元素的相關(guān)信息

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

    結(jié)果:

     
     
     
     
    1. 第3個 
    2. link3.html 
    3. link3.html 
    4. 第3個 
    5. 第3個 

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

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

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

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

    在瀏覽器中訪問鏈接:

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

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

    完整代碼如下:

     
     
     
     
    1. from pyquery import PyQuery as pq 
    2. import requests 
    3. # 設(shè)置代理服務(wù)器 
    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é)我們學(xué)會了如何去提取a標(biāo)簽中的內(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研究者」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Python研究者公眾號。


    網(wǎng)站欄目:PyQuery解析網(wǎng)頁用法入門講解
    鏈接URL:http://www.5511xx.com/article/cddjihh.html