python27基础-re模块-网络爬虫-openpyxl模块
2022/7/21 14:24:57
本文主要是介绍python27基础-re模块-网络爬虫-openpyxl模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今日学习
re 模块
第三方模块简介
网络爬虫实战
openpyxl模块
random模块
hashib模块
re模块
模块中,如果想用正则表达式,re模块是选择之一
名称 | 作用 |
---|---|
re.findall() | 通过正则表达式筛选出文本中所有符合条件的数据 |
re.finditer() | 和re.findall()作用一样,只不过结果会被处理成迭代器对象,用于节省内存,可以通过for循环或者双下next取值 |
re.search() | 通过正则表达式匹配一个符合条件的内容就结束 |
re.match() | 通过正则表达式从头开始匹配,如果头部已经不符合,那么后面不走 |
re.compile() | 能够提前准备好正则,之后可以反复使用,减少代码冗余 |
#-----------------------------练习----------------------------------------------- import re res = re.findall('a','jason oscar aaa') print(res) 过滤出来的内容返回成list形式展示 ----------执行结果------------ ['a', 'a', 'a', 'a', 'a'] ------------------【re.finditer】练习------------------------------------- import re res = re.finditer('a','jason oscar aaa') print(res) #查找出所有a,处理成迭代器对象。 for i in res: #通过for循环或者双下next取值 print(i) ----------执行结果------------ < callable_iterator object at 0x0000016217978760 > <re.Match object; span=(1, 2), match='a'> <re.Match object; span=(9, 10), match='a'> <re.Match object; span=(12, 13), match='a'> <re.Match object; span=(13, 14), match='a'> <re.Match object; span=(14, 15), match='a'> -----------------re.search练习----------------------------------- import re res = re.search('a','jason oscar aaa') print(res) #匹配出一个便结束查找 ----------[执行结果]------------ <re.Match object; span=(1, 2), match='a'> -----------------re.match练习--------------------------------------- import re res = re.match('a','jason oscar aaa') print(res) #从头第一个匹配,没有就返回None 和正则^相似 ----------[执行结果]------------ None -------------------re.compile('a')-------------------------------------- import re obj = re.compile('a') print(re.findall(obj,'asjd2aaa1hj13123j')) ----------[执行结果]-------------------- ['a', 'a', 'a', 'a'] #compile 能够提前准备好正则,之后可以反复使用减少代码冗余
re模块补充
--------------------1.不分组情况--------------------------------------------------- import re res = re.findall('abc', 'abcabcabcabc') #正常过滤出abc字符 print(res) -------执行结果------------------------ ['abc', 'abc', 'abc', 'abc'] -------------------2.分组并优先展示情况------------------------------------------------- res1 = re.findall('a(b)c','abcabcabcabc') print(res1) #分组,用小括号将过滤数据分出来优先展示 -------执行结果------------------------ ['b', 'b', 'b', 'b'] --------------------3.不分组情况--------------------------------------------------- import re res = re.findall('a(?:b)c','abcabcabcabc') print(res) #不分组,用小括号,括号内?:将过滤数据分出来优先展示 ---------执行结果-------------------- ['abc', 'abc', 'abc', 'abc'] ---------------------4.起别名------------------------------------------------------ res = res.search('a(?P<id>b)(?P<name>c)','abcabcabcabc') print(res.group()) #打印abc print(res.group(2)) #索引形式 # print(res.group('id')) #将b的别名id # print(res.group('name')) #c的别名为 name 定义别名 ?P<别名>
网络爬虫简介
1.什么是互联网? 将全世界的计算机链接到一起组成的网络 2.互联网目的? 将接入互联网的计算机上的数据彼此共享 3.上网的本质是什么? 基于互联网访问别人计算机上面的资源(有些计算机存在的意义就是让别人访问,这种类型的计算机我称为服务器) 4.网络爬虫的本质? 模拟计算机浏览目标发送请求回数据,并筛选,只要是浏览器访问到的就饿可以访问到的数据网络,爬虫理论上都可以 5.获取红牛分公司数据? http://www.redbull.com.cn/about/branch
第三方模块的下载
1.第三方模块必须先下载才可以导入使用 2.python下载第三方模块需要借助于pip工具 ------------------------------------------------------------------- 3.下载命令 pip3.8 install 模块 ----------------------------------------------------------------- 1.下载速度很慢 pip工具默认是从国外的仓库地址下载模块,速度很慢 ------------国内下载地址-------------------------------------------- 清华大学 :https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科学技术大学 :http://pypi.mirrors.ustc.edu.cn/simple/ 华中科技大学:http://pypi.hustunique.com/ 豆瓣源:http://pypi.douban.com/simple/ 腾讯源:http://mirrors.cloud.tencent.com/pypi/simple 华为镜像源:https://repo.huaweicloud.com/repository/pypi/simple/ ----------------【下载方式】------------------------------------------- #多版本共存时。我一共安装了2.7和3.8所以做了环境区分 pip3.8 install 模块名 -i 源地址 #如果只有一个python解释器环境,执行以下即可/ pip install 模块名 -i 源地址 pycharm 提供第三方模块下载快捷方式
-
pip 和pip3的区别
- pip 是一个现代的,通用的 [Python](https://baike.baidu.com/item/Python) 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。 - 如果系统中只安装了Python2,那么就只能使用pip。 - 如果系统中只安装了Python3,那么既可以使用pip也可以使用pip3,二者是等价的。 - 如果系统中同时安装了Python2和Python3,则pip默认给Python2用,pip3指定给Python3用。
-
下载报错情况
1.pip工具版本过低 直接拷贝提示信息里面的更新命令即可 pip install --upgrade pip 2.网络波动 关键字是Read timed out 只需要重新下载几次即可 或者切换一个网络稳定一点的 ## 3.有些模块在下载使用之前需要提前配置指定的环境 结合具体情况 百度搜索
-
解释器下载第三方模块图
- 下载第三方模块 requests
windos 键 +R 输入cmd命令 打开命
-
pycharm 安装第三方模块图
爬取公司信息
pip install requests
-
练习
# 朝目标地址发送网络请求获取响应数据(相当于在浏览器地址栏中输入网址并回车) ---------------------------不要一直请求某个网站---------------------------------------import requests import re res = requests.get('http://www.redbull.com.cn/about/branch') print(res.content) # 获取bytes类型的数据 print(res.text) # 获取解码之后的数据 #为了避免每次执行程序都要发送网络请求 也可以提前保存页面数据到文件 with open(r'hn.html','wb') as f: f.write(res.content) #保存到本地的静态html
--需求-统计所有的红牛页面所有的公司信息电话,地址等/。
import re #读取页面数据 with open(r'hn.html','r',encoding='utf-8') as f: data = f.read() #获取所有分公司的名称 company_name_list = re.findall('<h2>(.*?)</h2', data) company_email_list = re.findall("<p class='mailIco'>(.*?)</p>",data) company_add_list = re.findall("<p class='mapIco'>(.*?)</p>",data) company_phpone_list = re.findall("<p class='telIco'>(.*?)</p>",data) print(company_phpone_list) res1 = zip(company_name_list,company_add_list,company_phpone_list,company_email_list) for i in res1: print(""" 公司名称:%s 公司邮箱:%s 公司地址:%s 公司电话:%s """ %i) =====执行结果=========================== 公司名称:红牛杭州分公司 公司邮箱:杭州市上城xxx 公司地址:xxxxx 公司电话:xxxxx
openpyxl模块
作用:主要用于操作excel表格
也是pandas底层操作表格的模块 在python中能够操作excel表格的模块有很多 openpyxl属于近几年比较流行的模块 openpyxl针对03版本之前的excel文件兼容性不好 xlwt、xlrd也可以操作excel表格 兼容所有版本的excel文件 但是使用方式没有openpyxl简单
-
1.excel版本问题
03版本之前 excel文件的后缀名 .xls 03版本之后 excel文件的后缀名 .xlsx 如果是苹果电脑excel文件的后缀 .csv
-
利用openpyxl创建表格
from openpyxl import Workbook wb = Workbook() wb1 = wb.create_sheet('成绩表') wb2 = wb.create_sheet('财务表') wb3 = wb.create_sheet('校花表',0) wb44 = wb.create_sheet('八嘎') wb.title = '舔狗表' wb.save(r'111.xlsx')
-
写入数据
2.写入数据 # 第一种写入方式 wb1['A1'] = '叙利亚悍匪' wb1['D2'] = '慢男' # 第二种写入方式 wb1.cell(row=3, column=2, value='老六慢走') # 第三种写入方式(批量写入) wb1.append(['username','password','age','gender','hobby']) wb1.append(['jason1',123,18,'male','read']) wb1.append(['jason2',123,18,'male','read']) wb1.append(['jason3',123,18,'male','read']) wb1.append(['jason4',123,18,'male','read']) wb1.append(['jason4',123,18,'male',None]) wb1.append([None,123,18,'male','']) wb1['F11'] = '=sum(B5:B10)'
这篇关于python27基础-re模块-网络爬虫-openpyxl模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门