爬蟲爬取到的數據一般要進行解析,常用解析數據的方法一般有以下幾種:
- 正則表達式解析
- xpath解析
- BeautifulSoup解析
其它不常用的不再介紹
1、正則表達式解析
2、xpath解析
xpath下標從1開始
(1)匹配路徑中只有一個/
(表示從根節點開始一級一級往下進行匹配)
首先網頁代碼是我博客主頁代碼,如下所示:
接下來是Python代碼:
import requests
from lxml import etree
''' 定義函數獲取CSDN的博客標題 '''
def get_title():
# 網址及請求頭
url = 'https://blog.csdn.net/weixin_42603129'
headers = {'User-Agent': '"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"'}
# 獲取頁面信息
response = requests.get(url, headers = headers)
# 解析頁面
html = etree.HTML(response.text)
#提取數據,解析數據
data = html.xpath('/html/head/title/text()')
print(data)
get_title()
如上面代碼所示,匹配路徑一個一個往下查找,運行結果如下所示:
['1435018565_CSDN博客-Python,安裝部署,數據挖掘領域博主']
(2)匹配路徑中有兩個/
(表示從任意節點處開始一級一級向下進行匹配)
首先網頁代碼是我博客主頁代碼,如下所示:
接下來是Python代碼:
import requests
from lxml import etree
''' 定義函數獲取CSDN的博客標題 '''
def get_title():
# 網址及請求頭
url = 'https://blog.csdn.net/weixin_42603129'
headers = {'User-Agent': '"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"'}
# 獲取頁面信息
response = requests.get(url, headers = headers)
# 解析頁面
html = etree.HTML(response.text)
#提取數據,解析數據
data = html.xpath('//div/h4/a/text()')
print(data)
get_title()
運行代碼後可以看到如下結果(節選部分):
[’\n ', ’ 模塊安裝失敗 ', '\n ', ’ Redis
面試題 ', '\n ', ’ Python創建項目文件夾作用及配置 ', '\n
', ’ 認識Django MTV模式,Django常用命令 ', '\n ', ’
網站基礎知識 ', '\n ', ’ Python函數(3)匿名函數遞歸函數全局變量局部變量
', '\n ', ’ Python函數(2)函數參數傳遞值傳遞 ', '\n ', ’
Python函數(1)函數參數傳遞 ', '\n ', ’ Python基礎(8)字符串及常用操作
', '\n ', ’ Python基礎(7)集合及常用操作 ', '\n ', ’
… ']
(3)帶有//
和@
符號意爲精確匹配某一個標籤
首先網頁代碼如下圖所示:
Python代碼如下:
import requests
from lxml import etree
''' 定義函數獲取CSDN的博客標題 '''
def get_title():
# 網址及請求頭
url = 'https://blog.csdn.net/weixin_42603129'
headers = {'User-Agent': '"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"'}
# 獲取頁面信息
response = requests.get(url, headers = headers)
# 解析頁面
html = etree.HTML(response.text)
#提取數據,解析數據
data = html.xpath('//div[@class = "article-list"]/div/h4/a/@href')
print(data)
get_title()
運行代碼後結果(節選):
[‘https://blog.csdn.net/weixin_42603129/article/details/104297739’,
‘https://blog.csdn.net/weixin_42603129/article/details/103761672’,
‘https://blog.csdn.net/weixin_42603129/article/details/103756854’,
‘https://blog.csdn.net/weixin_42603129/article/details/103747529’,
…
‘https://blog.csdn.net/weixin_42603129/article/details/83212324’,
‘https://blog.csdn.net/weixin_42603129/article/details/83188788’,
‘https://blog.csdn.net/weixin_42603129/article/details/83154213’,
‘https://blog.csdn.net/weixin_42603129/article/details/83118387’]