re模块
在python中如果想要使用正则表达式 re模块是选择之一
import re
res=re.findall('a','jason oscar aaa')
print(res)
findall就是通过正则表达式筛选出文本中所有符合条件的数据
res=re.finditer('a','jason oscar aaa')
print(res)
finditer与findall作用一致 只不过结果会被处理成迭代器对象 用于节省内存
res=re.search('a','jason oscar aaa')
print(res)
search通过正则表达式匹配到一个符合条件的内容就结束 只要碰到一个就结束
res=re.match('a','jason oscar aaa')
print(res)
match通过正则表达式从头开始匹配 如果头部就不符合就直接结束
obj = re.compile('a')
print(re.findall(obj,'safagfuagfa'))
print(re.findall(obj, 'hfuidshgiwuhufhue'))
print(re.findall(obj,'sahdahdasdasdasfare'))
compile能够提前准备好正则 之后反复适应 减少代码冗余
re模块的补充
分组
import re
res=re.findall('yqb','yqbyqbyqbyqb')
print(res)
res=re.findall('y(q)b',yqbyqbyqbyqb)
print(res)
findall 针对分组的正则表达式匹配到的结果优先展示
res=re.findall('y(?:q)b''yqbyqbyqbyqb')
print(res)
findall也能够取消分组优先展示 使用(?:)
别名
import re
res=re.search('y(?P<id>b)(?P<name>b)','yqbyqbyqbyqb')
print(res.group())
print(res.group(1))
print(res.group('id'))
print(res.group('name'))
网络爬虫
1.什么是互联网:将全世界的计算机连接到一起组成的网络
2.互联网发明的目的是:将接入互联网的计算机上面的数据彼此共享
3.上网的本质是:基于互联网访问别人计算机上面的资源(有些计算机存在的意义就是让别人访问,这种类型的计算机我们也称之为服务器)
4.网络爬虫的本质:模拟计算机浏览器朝目标网址发送请求回去数据并筛选,只要是浏览器可以访问到的数据网络爬虫理论上都可以。
爬取公司信息
import requests
res=requests.get('http://www.redbull.com.cn/about/branch')
print(res.content)
print(res.text)
with open(r'hn.html','wb')as f:
f.write(res.content)
import re
with open(r'hn.html','r',encoding='utf8')as f:
data=f.read()
company_name_list=re.findall('<h2>(.*?)</h2>',data)
company_name_list=re.findall("<p class='mapIco'>(.*?)</p>",data)
company_addr_list = re.findall("<p class='mailIco'>(.*?)</p>", data)
company_email_list=re.findall("<p class='telIco'>(.*?)</p>",data)
company_phone_list = re.findall("<p class='telIco'>(.*?)</p>", data)
res=zip(company_name_list, company_addr_list, company_email_list, company_phone_list)
for i in res:
print("""
公司名称:%s
公司地址:%s
公司邮箱:%s
公司电话:%s
% i""")
第三方模块下载
* 第三方模块必须先下载才可以导入使用
* python下载第三方模块需要借助pip工具
* 下载命令:pip3.6 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/
pip3.8 install 模块名 -i 源地址
pycharm提供第三方模块下载快捷方式
也可以直接修改python解释器源文件
2.下载报错
1.pip工具版本过低 直接拷贝提示信息里面的更新命令即可
python38 -m pip install --upgrade pip
2.网络波动 关键字是Read timed out
只需要重新下载几次即可 或者切换一个网络稳定一点的
3.有些模块在下载使用之前需要提前配置指定的环境
结合具体情况 百度搜索
3.模块也有版本
pip3.8 install 模块名==版本号
pip3.8 install django==1.11.11
openpyxl模块
主要用于草最excel表格 也是pandas底层操作表格的模块
主要用于操作excel表格 也是pandas底层操作表格的模块
在python中能够操作excel表格的模块有很多
openpyxl属于近几年比较流行的模块
openpyxl针对03版本之前的excel文件兼容性不好
xlwt、xlrd也可以操作excel表格
兼容所有版本的excel文件 但是使用方式没有openpyxl简单
1.excel版本问题
03版本之前 excel文件的后缀名 .xls
03版本之后 excel文件的后缀名 .xlsx
如果是苹果电脑excel文件的后缀 .csv
2.下载模块
pip3.8 install openpyxl
实操
from openpyxl import Workbook #创建文件
wb=Workbook() #创建工作簿
wb.save(r'111.xlsx') # 保存文件
wb1=wb.create_sheet('成绩表')
wb1=wb.create_sheet('财务表')
wb1=wb.create_sheet('校花表')
wb1.title='舔狗表' # 支持二次修改
wb1.sheet_properties.tabColor="1072BA" # 修改工作簿颜色
wb.save(r'111.xlsx')# 保存文件
写入数据
第一种写入数据
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)'
作业
- 尝试将红牛分公司数据保存到excel表格中