第三方模块的下载和使用
之前我们在刚学模块的时候说过模块有几个分类:
1.内置模块
2.自定义模块
3.第三方模块
今天我们就学习了第三方模块的下载与使用方法
我们如果想要使用第三方模块那必须先下载 ,之后才能反复使用。
----------------------------------------------------------------------------------
下载第三方模块的2种方式:
1.pip工具
如我们电脑里有多个python版本,那么我们每个python 目录下有一个Scripts 文件夹,文件夹下有个pip程序,在我们使用的时候一定要注意该pip的版本。我们使用什么版本的解释器就要用什么版本的pip下载模块。
"""我们可以在各个python版本下的pip程序复制更名加上该版本号"""
在cmd命令行里下载模块的句式:
pip install 模块名
"""下载默认下载仓库是国外的,那么我们可以切换成国内的仓库,可以提升下载速度"""
切换下载仓库:
pip install 模块名 -i 仓库地址
"""也可以指定模块的版本号,默认最新版本,版本新不代表好用,也有可能很不稳定"""
指定模块版本:
pip install 模块名=版本号 -i 仓库地址
----------------------------------------------------------------------------------
2.pycharm提供的方法
打开file --- 打开settings --- 选择 project:文件名 --- 点击 python Interpreter ---- 双击模块名或点击+号 --- 输入模块名搜索 点击下方的install Package下载 -- 下载右侧的Manage Repositories 可以设置下载仓库,展示在模块名后方 --- 界面右下方的Specify version 可以选择模块版本号
![image](https://img2022.cnblogs.com/blog/2987323/202210/2987323-20221026202947164-2098820191.jpg)
cmd命令pip下载方式错误处理方法
下载第三方模块可能会出现的问题
1.报错并有警告信息
WARNING: You are using pip version 20.2.1;
"""原因在于pip版本太低了,拷贝后面的命令执行更新就行 eg:d:\python38\python.exe -m pip install --upgrade pip (upgrade pip) 更新的意思"""
更新完成后再次执行下载第三方模块的命令句式
----------------------------------------------------------------------------------
2.报错并含有Timeout关键字
# 说明当前计算机网络不稳定,更换网络或重新执行几次可解决问题。
----------------------------------------------------------------------------------
3.报错并没有关键字
百度搜吧。 根据 pip下载模块报错后面的'报错信息'来上百度搜。
# 一般都是需要提前下载一些文件 才可以顺利下载
----------------------------------------------------------------------------------
4.下载速度很慢
因为pip默认的下载仓库是国外的。
我们可以更换下载仓库地址
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) # 获取二进制的网页数据
2.获取的可能是二进制的数据我们可以指定代码
encoding
res.encoding = 'utf8' # 指定编码
print(res.text) # 获取字符串类型的网页数据
默认是以当前计算机的编码
网络爬虫实战 --- 爬取二手房数据
需要组合正则表达式使用。 pycharm 使用正则表达式那么就要借助 re模块
import requests
import re
res = requests.get('https://sh.lianjia.com/ershoufang/pudong/')
# 像指定的网址发出网络请求
print(res.text) # 打印网页源代码
data = res.txt # 变量名绑定 源代码
# 获取标题名
home_title_list = re.findall(
'<a class="" href=".*?" target="_blank" data-log_index=".*?" data-el="ershoufang" data-housecode=".*?" data-is_focus="" data-sl="">(.*?)</a>',
data)
print(home_title_list)
""" 根据源代码 寻找其特征使用 .*? 非贪婪匹配,根据左右两边的 条件 匹配 数据. 其余信息找到其规律 使用正则表达式 进行匹配 """
# 总之不论什么网址 我们只要找到其代码中,我们需要查找的数据的规律,根据左右两边 的条件来匹配。
"""我们只需在我们需要的数据那里使用分组优先展示 即可得到我们想要的数据"""
# 获取小区名
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_watch_list = re.findall('<div class="followInfo"><span class="starIcon"></span>(.*?)</div>', data)
# 获取房屋总价
home_total_price_list = re.findall(
'<div class="totalPrice totalPrice2"><i> </i><span class="">(.*?)</span><i>万</i></div>', data)
# 获取单价
home_unit_price_list = re.findall(
'<div class="unitPrice" data-hid=".*?" data-rid=".*?" data-price=".*?"><span>(.*?)</span></div>', data)
# 得到我们所有想要得到的数据后可以使用zip 把他们结合在一起
home_data = zip(home_title_list, home_name_list, home_street_list, home_info_list, home_watch_list,
home_total_price_list, home_unit_price_list)
# 打开文件 使用 w模式会自动新建文件
with open(r'home_data.txt', 'w', encoding = 'utf8') as f:
# 使用 for 循环获取内容循环打印
for data in home_data:
# 可以使用占位符也可以使用格式化打印
print("""
房屋标题:%s
小区名称:%s
街道名称:%s
详细信息:%s
关注程度:%s
房屋总价:%s
房屋单价:%s"""% data)
# 使用文件操作 写入数据
f.write("""
房屋标题:%s
小区名称:%s
街道名称:%s
详细信息:%s
关注程度:%s
房屋总价:%s
房屋单价:%s\n
"""%data)
# 加上换行符
使用pandas 方法写入
imoprt pandas
d1 = {
"房屋标题":home_title_list,
"小区名称":home_name_list,
"街道名称":home_street_list,
"详细信息":home_info_list,
"关注程度":home_watch_list,
"房屋总价":home_total_price_list,
"房屋单价":home_unit_price_list
}
# 字典转成pandas里的 DataFrame 数据结构
d2 = pandas.DataFrame(d1)
# 保存成excel文件
d2.to_excel(r'2.xlsx')
# from openpyxl import workbook
自动化办公领域之openpyxl模块
openpyxl 模块可以帮助我们 把爬取到的数据存放入excel表格里
excel 表格文件的后缀名问题
03 版本之前: .xls # 兼容性比较差
03 版本之后: .xlsx
操作excel表格的第三方模块
xlwt 往表格中写入数据
wlrd 从表格中读取数据
# 兼容所有版本的excel文件
----------------------------------------------------------------------------------
openpyxl模块 操作:
使用方法: 可以参观该模块的官网说明文档
from openpyxl import Workbook
Workbook() # 创建excel文件
wb = Workbook()
----------------------------------------------------------------------------------
wb.create_sheet # excel文件名. careate_sheet
要修改的工作簿变量名.title = '新的工作簿名字'
"""创建excel文件里的工作簿"""
w1 = wb.create_sheet('工作簿1')
w2 = wb.create_sheet('工作簿2')
"修改默认的工作簿位置"
w3 = wb.create_sheet('好看的', 0)
把 好看的 工作簿 放在首位
"""修改工作簿名"""
w3.title = '丑'
"""添加内容"""
1.要添加内容的工作簿变量名.cell(row(行)=1, column(列)=2, value(值)='tank')
w3.cell(row = 1, column = 2, value = 'tank')
"""此方法可以添加数学公式eg:"""
w3.cell(row = 1, column = 2, value = '=sum(A1:A2)')
2.根据excel文件内的定位加数据
w3['A1'] = 123
"""此方法可以添加数学公式eg:"""
在需要计算的位置添加
w3['A4'] = '=sun(A1:A3)'
3.根据 append 方法写数据
w3.append(['学生名','家庭住址','手机号'])
# 先 添加表头字段
根据表头字段添加数据
w3.append(['tank','皖m',18088888888])
可以增加多行
w3.append(['tony','赣B',13333333333])
4.保存文件
wb.save(r'a.xlsx')
"""openpyxl 主要用于写入数据,表单操作不是很擅长如果需要做的话可以使用高级模块pandas
excel软件可以操作的数据最大只有10W作业,一旦超过 软件操作无效"""
需要使用pandas模块
改变pandas内的 DataFrame数据格式:
d2 = pandas.DataFrame(d1)
保存成excel:
d2.to_excel(r'2.xlsx')