我們以我的博客為例,來爬取我所有寫過的博客的標題。
首先,打開我的博客頁面,右鍵“檢查”開始進行網頁分析。我們選中博客標題,再次右鍵“檢查”即可找到標題相應的位置,我們繼續點擊右鍵,選擇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庫之后,我們便可以使用其相關功能了。