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

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

下载第三方模块的方式

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. [题解] Codeforces Global Round 22 1738 A B C D E F 题解

    很久没rated打过cf的比赛了,这次打得还行,至少进前100了 点我看题 A. Glory Addicts 把类型0的数放进数组a里,类型1的数放进数组b里.如果\(|a|=|b|\),你可以把所有 ...

  2. 案例分享-https证书链不完整导致请求失败

    背景 话不多说,直接上堆栈 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX p ...

  3. IOC常用的创建对象方式

    通过无参构造方法来创建 1.User.java public class User { private String name; public User() { System.out.println( ...

  4. 5.ElasticSearch系列之文档的基本操作

    1. 文档写入 # create document. 自动生成 _id POST users/_doc { "user" : "shenjian", " ...

  5. 10.MongoDB系列之副本集组成

    1. 同步 复制是指多台服务器保持相同的数据副本.MongoDB通过保存操作日志(oplog)实现复制功能. oplog存在于主节点local数据库中的一个固定集合,包含了主节点执行的每一次写操作. ...

  6. 图解 | 聊聊 MyBatis 缓存

    首发公众号-悟空聊架构:图解 | 聊聊 MyBatis 缓存 你好,我是悟空. 本文主要内容如下: 一.MyBatis 缓存中的常用概念 MyBatis 缓存:它用来优化 SQL 数据库查询的,但是可 ...

  7. python学习笔记----必备知识

    一.必备知识 二.流程控制 https://blog.csdn.net/weixin_43304253/article/details/120778228 1.1语法特点: 1.1.1 代码注释 单行 ...

  8. C语言客房管理&酒店管理

    #include<iostream> #include<string.h> #include<stdlib.h> #include<iomanip> # ...

  9. python dir函数解析

    dir() 函数  不带参数,直接执行是返回当前环境中对象的名称列表.指定对象的名称作为参数执行,返回指定对象当中的属性(包括函数名,类名,变量名等)   下面我们具体找几个例子测试一下  dir() ...

  10. Blog2:nchu-software-oop-2022-4+5+期中

    Blog2:nchu-software-oop-2022-4+5+期中 一.前言 两次大作业是关于四边形和五边形的相关操作,类似于之前的三角形,但由于图形边数的变化,难度大大增加.对数学知识的运用考察 ...