一、第三方模块的下载与使用

第三方模块:别人写的模块,一般情况下功能都特别强大
    我们如果想使用第三方模块,第一次必须先下载,后面才可以反复使用(等同于内置模块)

下载第三方模块的方式

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])

网络爬虫之requests模块,自动办公领域之openpyx模块的更多相关文章

  1. python网络爬虫之使用scrapy自动登录网站

    前面曾经介绍过requests实现自动登录的方法.这里介绍下使用scrapy如何实现自动登录.还是以csdn网站为例. Scrapy使用FormRequest来登录并递交数据给服务器.只是带有额外的f ...

  2. 网络爬虫之requests模块的使用+Github自动登入认证

    本篇博客将带领大家梳理爬虫中的requests模块,并结合Github的自动登入验证具体讲解requests模块的参数. 一.引入:   我们先来看如下的例子,初步体验下requests模块的使用: ...

  3. 04.Python网络爬虫之requests模块(1)

    引入 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症.冗余代码症.重新发明轮子症.啃文档 ...

  4. Python网络爬虫之requests模块(1)

    引入 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症.冗余代码症.重新发明轮子症.啃文档 ...

  5. 04,Python网络爬虫之requests模块(1)

    引入 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症.冗余代码症.重新发明轮子症.啃文档 ...

  6. 06.Python网络爬虫之requests模块(2)

    今日内容 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 知识点回顾 xpath的解析流程 bs4的解析流程 常用xpath表达式 常用bs4解析方法 引入 ...

  7. Python网络爬虫之requests模块(2)

    session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 xpath的解析流程 bs4的解析流程 常用xpath表达式 常用bs4解析方法 引入 有些时候,我们在使用爬 ...

  8. Python网络爬虫之requests模块

    今日内容 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 知识点回顾 xpath的解析流程 bs4的解析流程 常用xpath表达式 常用bs4解析方法 引入 ...

  9. Python3网络爬虫之requests动态爬虫:拉钩网

    操作环境: Windows10.Python3.6.Pycharm.谷歌浏览器目标网址: https://www.lagou.com/jobs/list_Python/p-city_0?px=defa ...

  10. python网络爬虫之使用scrapy自动爬取多个网页

    前面介绍的scrapy爬虫只能爬取单个网页.如果我们想爬取多个网页.比如网上的小说该如何如何操作呢.比如下面的这样的结构.是小说的第一篇.可以点击返回目录还是下一页 对应的网页代码: 我们再看进入后面 ...

随机推荐

  1. 监控elasticsearch

    转载自:https://cloud.tencent.com/developer/article/1655489 注意:上半截跟下半截是采用的不同的方式,建议采用下半截的方式,上半截的方式据说获取不到数 ...

  2. CentOS系统磁盘目录空间调整

    前几天装了几台linux服务器,安装操作系统的时候,选择了默认磁盘分区,结果导致后面主目录分区空间不够用了,需要把其他分区的空间划分给主分区一点. 下面以CentOS6.5演示: 一.查看当前系统的磁 ...

  3. PAT乙级 1024 科学计数法

    思路 1.尝试失败:一开始想打算把结果直接存在一个字符串中,后来发现当指数大于0的时候还需要分别考虑两种情况,工程量巨大,尝试失败,于是借鉴了其他大佬思路,写出了ac代码 2.ac思路:首先取指数的绝 ...

  4. css自定义会话框

    效果图图下: HTML代码: <div style="background-color: transparent; border: 1px #DDDDDD solid; width: ...

  5. java中的自动拆装箱与缓存(Java核心技术阅读笔记)

    最近在读<深入理解java核心技术>,对于里面比较重要的知识点做一个记录! 众所周知,Java是一个面向对象的语言,而java中的基本数据类型却不是面向对象的!为了解决这个问题,Java为 ...

  6. Go Micro介绍与入门

    一 什么是Micro? Micro是一个微服务生态系统,致力于提供产品,服务和解决方案,以实现现代软件驱动型企业的创新.我们计划成为任何与微服务相关的事实资源,并期待公司能够利用这项技术为自己的业务. ...

  7. 达梦dba_segments指定表名查询到的大小都包含哪些数据

    一.结论 dba_segments指定表名查询到的段大小包含索引.约束.表字段数据(包含LOB字段)(1)表(不包含LOB字段)创建默认分配2个簇,1个簇用于存放表结构及字段数据,1个簇用于存放clu ...

  8. 监控CPU状况并发送邮件shell脚本

    #!/bin/bash #监控CPU状况并发送邮件 DATE=$(date +%y%m%d) TEMP=$(mktemp tmp.XXX.txt) cat /proc/cpuinfo >$TEM ...

  9. Vue学习之--------消息订阅和发布、基础知识和实战应用(2022/8/24)

    文章目录 1.基础知识 2.代码实例 2.1 main.js 2.2 School.vue 2.3 Student.vue 2.4 App.vue 3.全局事件总线通信改为消息的订阅和发布 3.1 核 ...

  10. 10.异步mysql

    python中操作mysql连接.操作.断开都是网络IO #安装支持异步aiomysql的模块 pip3 install aiomysql async def execute(): # 网络IO操作, ...