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)解析

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