爬虫爬取到的数据一般要进行解析,常用解析数据的方法一般有以下几种:
- 正则表达式解析
- 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’]