第三方模块下载
# 1. pip工具
避免pip冲突 我们在使用的时候可以添加对应的版本号
下载第三方模块的句式
pip install 模块名
下载第三方模块临时切换仓库
pip install 模块名 -i 仓库地址
下载第三方模块指定版本(不指定默认是最新版)
pip install 模块名==版本号 -i 仓库地址
# 2.pycharm自带工具
# 下载中可能出现的问题
# 1.报错并有警告信息
WARNING: You are using pip version 20.2.1;
原因在于pip版本过低 只需要拷贝后面的命令执行更新操作即可
# 2.报错并含有Timeout关键字
说明当前计算机网络不稳定 只需要换网或者重新执行几次即可
# 3.报错并没有关键字
百度搜索
# 4.下载速度慢
换源
requests模块
# requests模块能够模拟浏览器发送网络请求
import requests
作用:
#1.朝网址发送请求获取页面数据(相当于浏览器输入地址访问)
res = requests.get('http://www.redbull.com.cn/about/branch')
print(res.content) # 获取到的是bytes(二进制)类型的网页数据
print(res.text) # 获取到的是字符串(默认是utf8)类型的网页数据
我们在获取数据时也可以使用res.encoding = 'utf8'来指定网页编码
requests模块实战练习
# 爬取链家二手房数据
import requests
import re
res = requests.get('https://sh.lianjia.com/ershoufang/pudong/')
data = res.text
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)
# print(home_name_list)
home_message_tab_list = re.findall('<a href=".*?" target="_blank" data-log_index=".*?" data-el="region">.*? </a> - <a href=".*?" target="_blank">(.*?)</a> </div>',data)
# print(home_message_tab_list)
home_message_list = re.findall('<div class="houseInfo"><span class="houseIcon"></span>(.*?)</div>',data)
# print(home_message_list)
home_num_list = re.findall('<div class="followInfo"><span class="starIcon"></span>(.*?)</div>',data)
# print(home_num_list)
home_price_list = re.findall('<div class="totalPrice totalPrice2"><i> </i><span class="">(.*?)</span><i>万</i></div>',data)
# print(home_price_list)
home_one_price_list = re.findall('<div class="unitPrice" data-hid=".*?" data-rid=".*?" data-price=".*?"><span>(.*?)</span></div>',data)
# print(home_one_price_list)
home_list = zip(home_title_list,home_name_list,home_message_tab_list,home_message_list,home_num_list,home_price_list,home_one_price_list)
# print(home_list)
with open(r'home_list.txt','w',encoding='utf8') as f:
for data in home_list:
print("""
房屋标题:%s
小区名称:%s
街道名称:%s
详细信息:%s
关注程度:%s
房屋总价:%s
房屋单价:%s
"""%data)
f.write("""
房屋标题:%s
小区名称:%s
街道名称:%s
详细信息:%s
关注程度:%s
房屋总价:%s
房屋单价:%s\n
"""%data)
openpyxl模块
# 1.excel文件后缀名问题
03版本之前 : .xls
03版本之后 : .xlsx
# 2.操作excel表格的模块
1).xlwt : 往表格中写入数据
2).wlrd : 从表格中读取数据
(以上两个模块兼容所有版本的excel文件)
3).openpyxl模块: 最近几年比较火热的操作excel表格的模块
(03版本之前的兼容性较差)
4).pandas模块:比openpyxl更高级一般用于自动化办公
(可以操作多种格式文件不止excel表格)
# 3.openpyxl的操作
"""详细见官方文档"""
from openpyxl import Workbook
# 1.创建excel文件
wb = Workbook()
# 2.创建多个工作簿
wb1 = wb.create_sheet('备胎通讯录')
wb2 = wb.create_sheet('舔狗通讯录')
wb3 = wb.create_sheet('女友通讯录')
# 3.修改工作簿地位置
wb4 = wb.create_sheet('富婆通讯录',0)
# 4.修改工作簿名称,颜色
wb4.title = '备胎名单'
wb4.sheet_properties.tabColor = '000000'
# 5.填写数据的方式1
wb4['F6'] = 666
# 6.填写数据的方式2 row(行) column(列)
wb4.cell(row=6, column=5, value='hanser')
# 7.填写数据的方式3
wb4.append(['编号', '姓名', '年龄', '爱好'])
wb4.append([4, 'oscar', 38, 'ball']) # 正常写四个单元格
wb4.append([5, 'jerry', 'ball']) # 只写前三个单元格
wb4.append([6, 'tom', 88, 'ball', '哈哈哈']) # 写前五单元格
# 8.填写excel表格里的函数计算(数学公式)
wb4['A1'] = 666
wb4['A2'] = 666
wb4['B2'] = '=sum(A1:A4)'
wb4.cell(row=2, column=3, value='=sum(A1:A2)')
# 9.创建并保存操作的文件和数据
wb.save(r'111.xlsx')
openpyxl模块读取数据
from openpyxl import load_workbook
# 1.指定读取文件
wb = load_workbook(r'111.xlsx', data_only=True)
# 2.查看所有工作簿的名称
print(wb.sheetnames) # ['备胎名单', 'Sheet', '备胎通讯录', '舔狗通讯录', '女友通讯录']
# 3.指定某个工作簿
wb1 = wb['备胎名单']
# 4.读取工作簿相关操作
print(wb1.max_row) # 获取数据所在的最大行数
print(wb1.max_column) # 获取数据所在的最大列数
print(wb1['A1'].value) # 读取A1单元格内容
print(wb1['B2'].value) # 如果B2单元格是函数计算(数学公式),则读取结果在指定读取文件时加入参数 data_only=True
# 5.循环读取每行数据
for i in wb1.rows:
print([d.value for d in i])
# 6.循环读取每列数据
for j in wb1.columns:
print([d.value for d in j])