Python爬蟲數據解析:正則表達式解析;xpath解析數據;BeautifulSoup(bs4)解析

爬蟲爬取到的數據一般要進行解析,常用解析數據的方法一般有以下幾種:

  1. 正則表達式解析
  2. xpath解析
  3. 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’]

3、BeautifulSoup(bs4)解析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章