栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第三方模块

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第三方模块

Day28 第三方模块

文章目录
  • Day28 第三方模块
    • 1、re 模块
      • 1.1、re模块补充说明
    • 2、网络爬虫简介
      • 2.1、第三方模块的下载
      • 2.2、爬虫实战
    • 3、openpysl 模块
      • 3.1、openpyxl 实战
    • 作业
      • 尝试将红牛分公司数据保存到excel表格中

1、re 模块

python 解释器中如果想要使用正则表达式 re模块是选择之一

  1. re.findall

findall 通过正则表达式筛选出文本中所有符合条件的数据

import re
res = re.findall('a','jason oscar aaa')
print(res)
>>>>>>>>>>>>>>>
['a', 'a', 'a', 'a', 'a']
  1. re.finditer

finditer与 findall作用一致 只不过结果会被处理成迭代器对象 用于节省空间

import re
res=re.finditer('a','jason oscar aaa')
print(res)
>>>>>>>>>>>>>>>>>>>>>>>>>>
 
  1. re.search

search 通过正则表达式匹配到一个符合条件的内容就结束

import re
res=re.search('a','jason oscar aaa')
print(res)
print(res.group())
>>>>>>>>>>>>>>>>>>>>>>>>>

a
  1. re.match

match 通过 正则表达式 从头开始匹配 如果头已经不符合 那么就直接结束

import re
res=re.match('a','jason oscar aaa')
print(res)
None
  1. re.compile

compile 能够提前准备好 正则 之后可以反复使用 减少代码冗余

import re
obj=re.compile('a')
print(re.findall(obj,'ahfjklhala'))
>>>>>>>>>>>>>>>>>>>>>>>>>>
['a', 'a', 'a']
1.1、re模块补充说明

分组

findall针对分组的正则表达式匹配到的结果 优先展示

import re
res= re.findall('abc','abcabcabcabc')
print(res)
res=re.findall('a(b)c','abcabcabcabc')
print(res)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
['abc', 'abc', 'abc', 'abc']
['b', 'b', 'b', 'b']

取消分组的优先展示

import re
res=re.findall('a(?:b)c','abcabcabc')
print(res)
>>>>>>>>>>>>>>>>>>>>>
['abc', 'abc', 'abc']

别名

import re
res=re.search('a(?Pb)(?Pc)','abcabcabcabc')
print(res.group())
print(res.group(1))
print(res.group('id'))
print(res.group('name'))
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
abc
b
b
c
2、网络爬虫简介

什么是互联网

将是全世界的计算机接到一起组成的网络

互联网发明的目的是什么

将接入互联网的计算机上面的数据彼此共享

上网的本质是什么

基于互联网访问别人计算机 上面的资源(有些计算机存在的意义就是让别人访问,这种类型的计算机我们也称之位服务器)

网络爬虫的本质

模拟计算机游览器朝目标网址发送请求回去数据并筛选,只要是游览器可以访问到的数据网络爬虫理论上都可以

2.1、第三方模块的下载

第三方模块必须先下载才可以导入使用

python下载第三方模块需要借助于pip工具

解释器 终端下载命令 pip3.8 install 模块名

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/

修改下载仓库地址

临时修改源地址

pip3.8 install 模块名-i 源地址

pycharm提供第三方模块下载快捷方式
也可以直接修改python解释器源文件

下载报错

  1. pip 工具版本过低 直接拷贝提示信息里面的更新命令即可
python38 -m pip install --upgrade pip
  1. 网络波动 关键字 是read tinme out
    只需要重新下载几次即可 或者切换一个网络稳定一点的
  2. 有些模块在下载使用之前需要提前配置指定的环境

模块也有版本

格式:pip3.7 install 模块名==版本号
使用:pip3.7 install django==1.11.11

2.2、爬虫实战

import requests

import requests
res=requests.get('http://www.redbull.com.cn/about/branch')
# res.content  转成bytes 类型数据
print(res.text) #转成 解码之后的数据
with open(r'hn.html','wb')as hn_w:
    hn_w.write(res.content)  # 存为 hn.html文件

import re

import re
with open(r'hn.html','r',encoding='utf')as hn_r:
    hn_info=hn_r.read()
    # print(hn_info)
#通过 正则表达式 取文本中对应值
com_name=re.findall('>(.*?)',hn_info) 
com_addr=re.findall("

(.*?)

",hn_info) com_email=re.findall("

(.*?)

",hn_info) com_phone=re.findall("

(.*?)

",hn_info) #利用拉链 将每个公司的各 信息组成元组 再组合为迭代器 hn_list=zip(com_name,com_addr,com_email,com_phone) # 循环 取出 格式化打印 for i in hn_list: print() print(f'公司名称:{i[0]}n公司地址:{i[1]}n公司邮编:{i[2]}n公司联系电话:{i[3]}')
3、openpysl 模块

主要用于操作excel表格 也是pandas底层操作表格的模块

在python中能够操作excel表格的模块有很多,openpys属于近几年比较流行的模块(openpyxl针对03版本之前的excel文件兼容性不好)

xlwt、xlrd也可以操作excel表格,兼容所有版本的excel文件 但是使用方法没有openpyxl简单

excel版本问题

03版本之前 excel文件的后缀名 .xls

03版本之后 excel文件的后缀名.xlsx

如果是苹果电脑excel文件的后缀.csv

下载模块pip3.7 install openpyx1

3.1、openpyxl 实战

创建excel文件,创建表格

from openpyxl import Workbook
wb=Workbook()
wb1=wb.create_sheet('红牛公司信息') # 创建excel里表格
wb1.title='红牛分公司信息'  # 支持二次修改

wb.save(r'hn.xlsx')  # 保存文件

添加内容

通过 列 行 编号添加

from openpyxl import Workbook
wb=Workbook()
wb1=wb.create_sheet('红牛公司信息') # 创建excel里表格
wb1.title='红牛分公司信息'
wb1['A1']='红牛公司名'   # 在列表A1中添加文本红牛公司
wb1['B1']='红牛公司地址' #在列表B1 处添加 文本 红牛公司地址
wb1['C1']='公司电话'
wb1['D1']='邮箱'

wb.save(r'hn.xlsx')  # 保存文件

通过列表批量添加

from openpyxl import Workbook
wb=Workbook()
wb1=wb.create_sheet('红牛公司信息')  # 创建列表

wb1.title='红牛分公司信息'  # 支持二次修改
wb1['A1']='红牛公司名'  # 在列表A1中添加文本红牛公司
wb1['B1']='红牛公司地址'  #在列表B1 处添加 文本 红牛公司地址
wb1['C1']='公司电话'
wb1['D1']='邮箱'
wb1.append(['上海分公司','xxxx','139354335','311400'])

wb.save(r'hn.xlsx')  # 保存文件

保存文件

容易忘记

wb.save(r'hn.xlsx')  # 保存文件
作业 尝试将红牛分公司数据保存到excel表格中
import requests
res=requests.get('http://www.redbull.com.cn/about/branch')
# res.content  转成bytes 类型数据
# print(res.text) #转成 解码之后的数据
with open(r'hn.html','wb')as hn_w:
    hn_w.write(res.content)
import re
with open(r'hn.html','r',encoding='utf')as hn_r:
    hn_info=hn_r.read()
    # print(hn_info)
com_name=re.findall('>(.*?)',hn_info)
com_addr=re.findall("

(.*?)

",hn_info) com_email=re.findall("

(.*?)

",hn_info) com_phone=re.findall("

(.*?)

",hn_info) hn_list=zip(com_name,com_addr,com_email,com_phone) hn_list=(list(hn_list)) from openpyxl import Workbook wb=Workbook() wb1=wb.create_sheet('红牛公司信息') # 创建列表 wb1.title='红牛分公司信息' # 支持二次修改 wb1['A1']='红牛公司名' wb1['B1']='红牛公司地址' wb1['C1']='邮编' wb1['D1']='联系号码' for i in hn_list: wb1.append(list(i)) # wb.save(r'hn.xlsx') # 保存文件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017953.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号