Python网络爬虫之三种数据解析方式
1. 正则解析
- 正则例题
import re
# string1 = """<div>静夜思
# 窗前明月光
# 疑是地上霜
# 举头望明月
# 低头思故乡
# </div>"""
# print(re.findall('<div>(.*)</div>',string1,re.S))
#如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始,不会跨行。
# 而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,将“\n”当做一个普通的字符加入到这个字符串中,在整体中进行匹配
#匹配以i 开头的行
# string = '''fall in love with you
# i love you very much
# i love she
# i love her'''
# print(re.findall('^i.*',string,re.M))
#re.M表示将字符串视为多行,从而^匹配每一行的行首,$匹配每一行的行尾
#提取出python
# key="javapythonc++php"
# print(re.findall('python',key))
#提取出hello world
# key="<html><h1>hello world<h1></html>"
# print(re.findall('<h1>(.*)<h1>',key)[0])
#提取170
# string = '我喜欢身高为170的女孩'
# print(re.findall('\d+',string))
#提取出hit. :贪婪模式:尽可能多的匹配数据
# key='bobo@hit.edu.com'#想要匹配到hit.
# print(re.findall('h.*?\.',key))
- 糗图下载案例
import requests
import re
import os
url = 'https://www.qiushibaike.com/pic/'
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
# 创建一个存储图片的文件夹
dir_name = 'qiutu'
if not os.path.exists(dir_name):
os.mkdir(dir_name)
response = requests.get(url=url, headers=header)
# 获取字符串类型数据
page_text = response.text
# print(page_text)
# 使用正则进行数据解析(图片(img中src属性中存储的数据值))
src_list = re.findall('<div class="thumb">.*?<img src="(.*?)".*?>.*?</div>', page_text, re.S)
# 拼接图片的url
for src in src_list:
# 获取了图片完整的url
src = 'https:' + src
# 下载图片(发请求)
image_data = requests.get(url=src, headers=header).content
fileName = src.split('/')[-1]
filePath = dir_name + '/' + fileName
with open(filePath, 'wb') as fp:
fp.write(image_data)
print('一张图片下载成功')
2. xpath
2.1 格式
from lxml import etree
两种方式使用:将html文档变成一个对象,然后调用对象的方法去查找指定的节点
(1)本地文件
tree = etree.parse(文件名)
(2)网络文件
tree = etree.HTML(网页字符串)
ret = tree.xpath(路径表达式)
3.bs4解析
- 环境安装
- windows
(1)打开文件资源管理器(文件夹地址栏中)
(2)地址栏上面输入 %appdata%
(3)在这里面新建一个文件夹 pip
(4)在pip文件夹里面新建一个文件叫做 pip.ini ,内容写如下即可
[global]
timeout = 6000
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
- linux
(1)cd ~
(2)mkdir ~/.pip
(3)vi ~/.pip/pip.conf
(4)编辑内容,和windows一模一样
- 需要安装:pip install bs4
bs4在使用时候需要一个第三方库,把这个库也安装一下
pip install lxml
- 用法
- from bs4 import BeautifulSoup
- 使用方式:可以将一个html文档,转化为BeautifulSoup对象,然后通过对象的方法或者属性去查找指定的内容
(1)转化本地文件:
- soup = BeautifulSoup(open('本地文件'), 'lxml')
(2)转化网络文件:
- soup = BeautifulSoup('字符串类型或者字节类型', 'lxml')
(3)打印soup对象显示内容为html文件中的内容
Python网络爬虫之三种数据解析方式的更多相关文章
- 05.Python网络爬虫之三种数据解析方式
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- 05,Python网络爬虫之三种数据解析方式
回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据 ...
- 《Python网络爬虫之三种数据解析方式》
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- Python网络爬虫之三种数据解析方式 (xpath, 正则, bs4)
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- Python爬虫之三种数据解析方式
一.引入 二.回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需 ...
- Python网络爬虫实战(二)数据解析
上一篇说完了如何爬取一个网页,以及爬取中可能遇到的几个问题.那么接下来我们就需要对已经爬取下来的网页进行解析,从中提取出我们想要的数据. 根据爬取下来的数据,我们需要写不同的解析方式,最常见的一般都是 ...
- Python爬虫的三种数据解析方式
数据解析方式 - 正则 - xpath - bs4 数据解析的原理: 标签的定位 提取标签中存储的文本数据或者标签属性中存储的数据 正则 # 正则表达式 单字符: . : 除换行以外所有字符 [] : ...
- python网络爬虫数据中的三种数据解析方式
一.正则解析 常用正则表达式回顾: 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字.字母.下划线 ...
- Python多线程爬虫与多种数据存储方式实现(Python爬虫实战2)
1. 多进程爬虫 对于数据量较大的爬虫,对数据的处理要求较高时,可以采用python多进程或多线程的机制完成,多进程是指分配多个CPU处理程序,同一时刻只有一个CPU在工作,多线程是指进程内部有多个类 ...
随机推荐
- css流式布局
elem{ width:1160px;/*流式布局的总宽度*/ column-width:375px; -moz-column-width: 375px; /*每列宽度*/ -webkit-colum ...
- 数据可视化之pyecharts
Echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化.pyecharts 是一个用于生成 Echarts 图表的类库.实际上就是 Echarts 与 Python 的对接. 安装 ...
- 老男孩Python全栈学习 S9 日常作业 004
1.写代码,有如下列表,按照要求实现每一个功能 li = ["alex", "WuSir", "ritian", "barry&q ...
- swiper常见问题
swiper是一个比较不错的一个轮播插件,但是呢,有时候在使用的时候也会出现很多的问题,我将我遇到的一些问题解决办法写在下面. 第一个问题:swiper分页器不显示 一般swiper使用分页器都是这样 ...
- Python中应该使用%还是format来格式化字符串?
转载自http://www.cnblogs.com/liwenzhou/p/8570701.html %的特点是,前面有几个%,后面的括号里就得有几个参数,如果只有一个%,括号可以省略 基本格式 'a ...
- win10下maven的安装与配置
下载apache-maven-3.5.3-bin.zip并解压: 环境配置: 系统环境:添加=>MAVEN_HOME 值为apache-maven-3.5.3的路径(D:\xxx\apache- ...
- Javascript arguments.callee和caller的区别
一.callee 在学习callee之前,需要先学习arguments. arguments: 含义:该对象代表正在执行的函数和调用它的函数的参数. 语法: 1 [function.]argument ...
- ES6 + Webpack + React + Babel 如何在低版本浏览器上愉快的玩耍
https://blog.csdn.net/a324539017/article/details/52824189
- VMWare 鼠标无法点击 的问题
今日发现在VMWare虚拟机中点击鼠标没有反应,但是鼠标hover.键盘都是正常的. 还表现为,如果从外部环境激活鼠标,然后移至虚拟机区域,快速双击,则可以捕获为单击. 这个问题在网络上未见有明确解释 ...
- Beta冲刺(4/7)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(4/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 整理博客 ppt模板 接下来的计划 做好机动. ...