使用XPath爬取網頁數據


  我們以我的博客為例,來爬取我所有寫過的博客的標題。

  首先,打開我的博客頁面,右鍵“檢查”開始進行網頁分析。我們選中博客標題,再次右鍵“檢查”即可找到標題相應的位置,我們繼續點擊右鍵,選擇Copy,再點擊Copy XPath,即可獲得對應的XPath編碼,我們可以先將它保存在一個文本文檔中。

  我們再多次對各個標題重復以上操作,即可得到關於標題的XPath編碼的規律。我們不難看出,對於我的博客的標題的XPath編碼格式為“//*[@id="mainContent"]/div/div[n]/div[2]/a”。

  又因為我的博客共有2頁,所以我們還需找到網頁url的規律,經過分析,我們發現格式為'https://www.cnblogs.com/Chen-K/default.html?page='+str(i+1)。

  下面便可開始寫代碼:

import requests
from lxml import etree

for i in range(0,2):
    url = 'https://www.cnblogs.com/Chen-K/default.html?page='+str(i+1)
    html = requests.get(url)
    etree_html = etree.HTML(html.text)
    a = etree_html.xpath('//*[@id="mainContent"]/div/div/div[2]/a/text()') # 加text()是為了將結果以txt格式輸出
    for j in a:
        print(j)

    運行結果:

  若是要爬取其他的數據,我們只需復制下來相應的XPath編碼即可。操作過程大同小異,我們便不再多加贅述,下面我們以爬取每個博客的url為例:

import requests
from lxml import etree

for i in range(0,2):
    url = 'https://www.cnblogs.com/Chen-K/default.html?page='+str(i+1)
    html = requests.get(url)
    etree_html = etree.HTML(html.text)
    a = etree_html.xpath('//*[@id="mainContent"]/div/div/div[2]/a/@href')
    for j in a:
        print(j)

  運行結果:

  XPath與BeautifulSoup相比,操作更加簡單,代碼也更為簡潔,如果需要爬取比較多的信息,使用XPath將會大大減少我們的工作量。當然,我們想要使用XPath,必須先安裝lxml庫,而我們有兩個方法可以安裝lxml庫。

  1、使用pip安裝

  我們只需打開命令行,輸入指令“pip install lxml”,然后等待安裝即可。

  2、使用PyCharm安裝

  我們點擊“文件”,找到設置,打開后點擊右邊的加號,然后在上面的搜索框中輸入lxml,然后點擊下方install,等待安裝即可。

  安裝好lxml庫之后,我們便可以使用其相關功能了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM