一、第三方模块的下载与使用
第三方模块:别人写的模块,一般情况下功能都特别强大
我们如果想使用第三方模块,第一次必须先下载,后面才可以反复使用(等同于内置模块)
下载第三方模块的方式
1. pip工具 注意每个解释器都有pip工具,如果我们的电脑上有多个版本的解释器,那么我们在使用pip的时候一定要注意到底用的是哪一个,否则极其容易出现使用的是A版本解释器,然后用B版本的pip下载模块。
为了避免pip冲突,我们在使用的时候可以添加对应的版本号
python27 | pip2.7 |
python36 | pip3.6 |
python38 | pip3.8 |
- 下载第三方模块的句式:
pip install 模块名
- 下载第三方模块临时切换仓库
pip install 模块名 -i 仓库地址
- 下载第三方模块指定版本(不指定默认是最新版)
pip install 模块名==版本号 -i 仓库地址
2. pycharm提供快捷方式
注意:下载第三方模块可能会出现的问题
1. 报错并有警告信息
WARNING: You are using pip version 20.2.1;
原因在于pip版本过低,只需要拷贝后面的命令执行更新操作即可
d:\python38\python.exe -m pip install --upgrade pip
更新完成后再次执行下载第三方模块的命令即可
2.报错并含有Timeout关键字
说明当前计算机网络不稳定,只需要换网或者重新执行几次即可
3. 报错并没有关键字
面向百度搜索
pip下载XXX报错:拷贝错误信息
通常都是需要用户提前准备好一些环境才可以顺利下载
4.下载速度很慢
pip默认下载的仓库地址是国外的 python.org
我们可以切换下载的地址
pip install 模块名 -i 仓库地址
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/
二、网络爬虫模块之requests模块
requests模块能够模拟浏览器发送网络请求
导入模块: import requests
1. 朝指定网址发送请求获取页面数据(等价于:浏览器地址栏输入网址回车访问)
res = requests.get('http://www.redbull.com.cn/about/branch') print(res.content) # 获取bytes类型的网页数据(二进制) res.encoding = 'utf8' # 指定编码 print(res.text) # 获取字符串类型的网页数据(默认按照utf8)
2. 网络爬虫实战之爬取链家二手房数据
import re import requests res = requests.get('https://sh.lianjia.com/ershoufang/pudong/tt9/') data = res.text home_name_list = re.findall('<a href=".*?" target="_blank" data-log_index=".*?" data-el="region">(.*?) </a>',data) home_street_list = re.findall('<div class="positionInfo"><span class="positionIcon"></span><a href=".*?" target="_blank" data-log_index=".*?" data-el="region">.*? </a> - <a href=".*?" target="_blank">(.*?)</a> </div>',data) home_info_list = re.findall('<div class="houseInfo"><span class="houseIcon"></span>(.*?)</div>',data) home_attention_list = re.findall('<div class="followInfo"><span class="starIcon"></span>(.*?)</div>',data) home_unite_price = re.findall('<div class="unitPrice" data-hid=".*?" data-rid=".*?" data-price=".*?"><span>(.*?)</span></div></div>',data) home_data = zip(home_name_list,home_street_list,home_info_list,home_attention_list,home_unite_price) with open(r'home_data.txt', 'w',encoding='utf8') as f: for data in home_data: print(""" 1.房屋名称 : %s 2.房屋街道 : %s 3.房屋详情 : %s 4.房屋关注度 : %s 5.房屋价格 : %s """ % data) f.write(""" 1.房屋名称 : %s 2.房屋街道 : %s 3.房屋详情 : %s 4.房屋关注度 : %s 5.房屋价格 : %s """ % data)
三、自动化办公领域之openpyxl模块
- excel文件的后缀名问题
03版本之前 .xls
03版本之后 .xlsx
- 操作excel表格的第三方模块
xlwt:往表格中写入数据、xlrd:从表格中读取数据:兼容所有版本的excel文件
openpyxl:最近几年比较火热的操作excel表格的模块
03版本之前的兼容性较差
pandas:涵盖了上述的模块
openpyxl操作
1. 创建文件与修改文件名称
Workbook() —创建 excel 文件
from openpyxl import Workbook wb = Workbook() # 创建了一个excle表格 wb.save(r'客户信息表.xlsx') # 保存之后表格才会出现
双击打开如图:
在一个excel文件内创建多个工作簿(注意必须把之前创建的表格关掉之后才可以操作,不然会报错)
from openpyxl import Workbook wb = Workbook() wb1 = wb.create_sheet('客户名单1') wb2 = wb.create_sheet('客户名单2') wb3 = wb.create_sheet('客户名单3') wb.save(r'客户信息表.xlsx')
双击打开如图:
还可以修改默认的工作簿位置
from openpyxl import Workbook wb = Workbook() wb1 = wb.create_sheet('客户名单1') wb2 = wb.create_sheet('客户名单2') wb3 = wb.create_sheet('客户名单3') wb4 = wb.create_sheet('VIP客户', 0) # 参数0表示的是工作薄位置 wb.save(r'客户信息表.xlsx')
二次修改工作薄名称
from openpyxl import Workbook wb = Workbook() wb1 = wb.create_sheet('客户名单1') wb2 = wb.create_sheet('客户名单2') wb3 = wb.create_sheet('客户名单3') wb4 = wb.create_sheet('VIP客户', 0) wb4.title = '长期客户' # 将‘VIP客户’修改为‘长期客户’ wb.save(r'客户信息表.xlsx')
2. 填写数据
填写数据的方式1:Worksheet[ ]
from openpyxl import Workbook wb = Workbook() # 创建了一个excle表格 wb1 = wb.create_sheet('客户名单1') wb1['A1'] = 666 # ['A1'] 代表的是该表中的 A1 位置,我们可以将数据直接赋值给它 wb.save(r'客户信息表.xlsx')
填写数据的方式2:Worksheet.cell()
from openpyxl import Workbook wb = Workbook() # 创建了一个excle表格 wb1 = wb.create_sheet('客户名单1') wb1.cell(row=3, column=1, value='Alex') # 在第3行第1列写入数据 wb.save(r'客户信息表.xlsx')
填写数据的方式3:Worksheet.append() 可以同时写入多个数据
from openpyxl import Workbook wb = Workbook() # 创建了一个excle表格 wb1 = wb.create_sheet('客户名单1') wb1.append(['编号', '姓名', '年龄', '爱好']) # 表头字段 wb1.append([1, 'jason', 18, 'read']) wb1.append([2, 'kevin', 28, 'music']) wb1.append([3, 'tony', 58, 'play']) wb1.append([4, 'oscar', 38, 'ball']) wb.save(r'客户信息表.xlsx')
3. 填写数学公式
wb1['A1'] = 12 wb1['A2'] = 15 wb1['A3'] = 23 wb1['A4'] = 35 wb1['A5'] = '= sum(A1:A4)' # 85
openpyx实战:
将前面爬取的房屋信息写入Excley文件:
import requests res = requests.get('https://sh.lianjia.com/ershoufang/pudong/tt9/') data = res.text home_name_list = re.findall('<a href=".*?" target="_blank" data-log_index=".*?" data-el="region">(.*?) </a>',data) home_street_list = re.findall('<div class="positionInfo"><span class="positionIcon"></span><a href=".*?" target="_blank" data-log_index=".*?" data-el="region">.*? </a> - <a href=".*?" target="_blank">(.*?)</a> </div>',data) home_info_list = re.findall('<div class="houseInfo"><span class="houseIcon"></span>(.*?)</div>',data) home_attention_list = re.findall('<div class="followInfo"><span class="starIcon"></span>(.*?)</div>',data) home_unite_price = re.findall('<div class="unitPrice" data-hid=".*?" data-rid=".*?" data-price=".*?"><span>(.*?)</span></div></div>',data) home_data = zip(home_name_list,home_street_list,home_info_list,home_attention_list,home_unite_price) from openpyxl import Workbook wb = Workbook() wb1 = wb.create_sheet('房屋信息', 0) wb1.append(['房屋名称','房屋街道','房屋详情','房屋关注度','房屋价格']) for data in home_data: wb1.append(data) wb.save(r'home_info.xlsx')
openpyxl主要用于数据的写入,至于后续的表单操作它并不是很擅长,如果想做需要更高级的模块pandas
4. openpyxl读取数据
from openpyxl import load_workbook # 1.指定读取的文件 wb = load_workbook(r'客户信息表.xlsx') # 2.查看内部所有工作簿名称 print(wb.sheetnames) # ['Sheet', '客户名单1'] # 3.指定某个工作簿 wb1 = wb['客户名单1'] # 4.读取工作簿相关操作 print(wb1.max_row) # 获取最大数据行数 5 print(wb1.max_column) # 获取最大数据列数 1 print(wb1['A1'].value) # 读取单元格内容 12 print(wb1['A5'].value) # 如果是公式 读取的公式 # = sum(A1:A4)
按行和列读取数据:
for i in wb1.rows: print([d.value for d in i]) for j in wb1.columns: print([d.value for d in j])
标签:wb,wb1,openpyx,模块,Workbook,home,requests,data From: https://www.cnblogs.com/chen-ao666/p/16830455.html