7/20课上内容整理

174 阅读4分钟

re模块

在python中如果想要使用正则表达式 re模块是选择之一
import re
res=re.findall('a','jason oscar aaa')
print(res)
findall就是通过正则表达式筛选出文本中所有符合条件的数据

image.png

res=re.finditer('a','jason oscar aaa')
print(res)
finditer与findall作用一致 只不过结果会被处理成迭代器对象 用于节省内存

image.png

res=re.search('a','jason oscar aaa')
print(res)
search通过正则表达式匹配到一个符合条件的内容就结束  只要碰到一个就结束 

image.png

res=re.match('a','jason oscar aaa')
print(res)
match通过正则表达式从头开始匹配 如果头部就不符合就直接结束

image.png

obj = re.compile('a')
print(re.findall(obj,'safagfuagfa'))
print(re.findall(obj, 'hfuidshgiwuhufhue'))
print(re.findall(obj,'sahdahdasdasdasfare'))
compile能够提前准备好正则 之后反复适应 减少代码冗余

image.png

re模块的补充

分组

import re
res=re.findall('yqb','yqbyqbyqbyqb')
print(res)

image.png

res=re.findall('y(q)b',yqbyqbyqbyqb)
print(res)
findall 针对分组的正则表达式匹配到的结果优先展示

image.png

res=re.findall('y(?:q)b''yqbyqbyqbyqb')
print(res)
findall也能够取消分组优先展示 使用(?:)

image.png

别名

import re
res=re.search('y(?P<id>b)(?P<name>b)','yqbyqbyqbyqb')
print(res.group())
print(res.group(1))
print(res.group('id'))
print(res.group('name'))

网络爬虫

1.什么是互联网:将全世界的计算机连接到一起组成的网络
2.互联网发明的目的是:将接入互联网的计算机上面的数据彼此共享
3.上网的本质是:基于互联网访问别人计算机上面的资源(有些计算机存在的意义就是让别人访问,这种类型的计算机我们也称之为服务器)
4.网络爬虫的本质:模拟计算机浏览器朝目标网址发送请求回去数据并筛选,只要是浏览器可以访问到的数据网络爬虫理论上都可以。    

爬取公司信息

import requests
res=requests.get('http://www.redbull.com.cn/about/branch')
print(res.content)
print(res.text)
with open(r'hn.html','wb')as f:
    f.write(res.content)
import re
with open(r'hn.html','r',encoding='utf8')as f:
    data=f.read()
    company_name_list=re.findall('<h2>(.*?)</h2>',data)
    company_name_list=re.findall("<p class='mapIco'>(.*?)</p>",data)
    company_addr_list = re.findall("<p class='mailIco'>(.*?)</p>", data)
    company_email_list=re.findall("<p class='telIco'>(.*?)</p>",data)
    company_phone_list = re.findall("<p class='telIco'>(.*?)</p>", data)
    res=zip(company_name_list, company_addr_list, company_email_list, company_phone_list)
    for i in res:
        print("""
        公司名称:%s
        公司地址:%s
        公司邮箱:%s
        公司电话:%s
           % i""")

第三方模块下载

* 第三方模块必须先下载才可以导入使用
* python下载第三方模块需要借助pip工具
* 下载命令:pip3.6 install 模块名
* 1.下载速度很慢
        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解释器源文件
    

d1cc1374e0394d8e2e1fec76af2d81c.jpg

1dc352d0b703434d13bc43d15de0ff2.jpg

997f576b1c76f228c3315b7d767f770.jpg

ca2809049c0dd9b73ba25bea3d084c7.jpg

9a9db2fa60099cc192a3c849c60b40c.jpg

    2.下载报错
            1.pip工具版本过低 直接拷贝提示信息里面的更新命令即可
                    python38 -m pip install --upgrade pip
            2.网络波动 关键字是Read timed out
                    只需要重新下载几次即可 或者切换一个网络稳定一点的
            3.有些模块在下载使用之前需要提前配置指定的环境
                    结合具体情况 百度搜索
    3.模块也有版本
            pip3.8 install 模块名==版本号
            pip3.8 install django==1.11.11
        

image.png

openpyxl模块

主要用于草最excel表格  也是pandas底层操作表格的模块
主要用于操作excel表格 也是pandas底层操作表格的模块
在python中能够操作excel表格的模块有很多
        openpyxl属于近几年比较流行的模块
        openpyxl针对03版本之前的excel文件兼容性不好
        xlwt、xlrd也可以操作excel表格
        兼容所有版本的excel文件 但是使用方式没有openpyxl简单
1.excel版本问题
        03版本之前 excel文件的后缀名 .xls
        03版本之后 excel文件的后缀名 .xlsx
        如果是苹果电脑excel文件的后缀 .csv
2.下载模块
        pip3.8 install openpyxl

image.png

实操

from openpyxl import Workbook  #创建文件
wb=Workbook()  #创建工作簿
wb.save(r'111.xlsx')  # 保存文件
wb1=wb.create_sheet('成绩表')
wb1=wb.create_sheet('财务表')
wb1=wb.create_sheet('校花表')

wb1.title='舔狗表'  # 支持二次修改
wb1.sheet_properties.tabColor="1072BA"  # 修改工作簿颜色
wb.save(r'111.xlsx')# 保存文件


写入数据
第一种写入数据
wb1['A1']='叙利亚悍匪'
wb1['D2']='慢男'
第二种写入方式
wb1.cell(row=3,column=2,value='老六慢走')
第三种写入方式(批量写入)
wb1.append(['username', 'password', 'age', 'gender', 'hobby'])
wb1.append(['jason1', 123, 18, 'male', 'read'])
wb1.append(['jason2', 123, 18, 'male', 'read'])
wb1.append(['jason3', 123, 18, 'male', 'read'])
wb1.append(['jason4', 123, 18, 'male', 'read'])
wb1.append(['jason4', 123, 18, 'male', None])
wb1.append([None, 123, 18, 'male', ''])

wb1['F11'] = '=sum(B5:B10)'

作业

  • 尝试将红牛分公司数据保存到excel表格中

179c85496e253357346fe9012367419.jpg

55e07e17dc26b7f9e14368e69c319ee.jpg