re模块

import re  # 导入re模块

1.findall通过正则表达式筛选出所有符合的数据 返回的是列表
res = re.findall('a', 'jason oscar abs')
print(res)  # ['a', 'a', 'a']

2.finditer与findall一致,只不过得出的结果是迭代器 为了节省内存
res = re.finditer('a', 'jason oscar abs')
print(res)  # <callable_iterator object at 0x0000025A9ECDB278>

3.search 通过正则表达式匹配到一个符合的条件,就结束
res = re.search('a', 'jason oscar abs')
print(res)  # <_sre.SRE_Match object; span=(1, 2), match='a'>
print(res.group())  # a

4.match 通过正则表达式从头开始匹配,第一个不符合的话 后面就不走了
res = re.match('a', 'jason oscar abs')
print(res)  # None

5.compile 可以提前准备好正则 以便后续的反复使用 减少代码的沉于
obj = re.compile('a')
print(re.findall(obj, 'jason abs'))  # ['a', 'a']
print(re.findall(obj, 'asnsalara'))  # ['a', 'a','a', 'a']

re模块补充说明

# 分组
res = re.findall('abc', 'abcabcabcabc')
print(res)  # ['abc', 'abc', 'abc', 'abc']
res = re.findall('a(b)c', 'abcabcabcabc')  # findall针对分组的正则表达式匹配到的结果 优先展示
print(res)  # ['b', 'b', 'b', 'b']
res = re.findall('a(?:b)c', 'abcabcabcabc') #  findall使用(?:)也能够取消分组优先展
print(res)  # ['abc', 'abc', 'abc', 'abc']

res = re.search('a(b)c', 'abcabcabcabc')
print(res.group())   # abc
print(res.group(0))  # abc
print(res.group(1))  # b
print(res.group(2))  # 会报错


# 起别名
res = re.search('a(?P<id>b)(?P<name>c)', 'abcabcabcabc')
print(res)  # <_sre.SRE_Match object; span=(0, 3), match='abc'>
print(res.group())  # abc
print(res.group(1))  # b
print(res.group('id'))  # b
print(res.group('name'))  # c

网络爬虫简介

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

第三方模块下载

第三方模块必须先下载才可以导入使用
python下载第三方模块需要借助于pip工具

1.下载命令
	pip3.6 install 模块名
	模块也有版本
	pip3.6 install 模块名==版本号
eg:
	pip3.6 install django==1.11.11
2.卸载命令
	pip3.6 uninstall 模块名
3.查看python版本号
	3.1win+R输入cmd,打开命令窗口

	3.2输入指令:python --version

4.查看所有第三方包
	4.1win+R输入cmd,打开命令窗口

	4.2输入指令:pip list

5.查看某第三方包信息、版本号
	5.1win+R输入cmd,打开命令窗口

	5.2输入指令:pip show 模块名

一、下载速度很慢

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.6 install 模块名 -i 源地址

二、下载报错

* 2.1.pip工具版本过低 直接拷贝提示信息里面的更新命令即可

python38 -m pip install --upgrade pip
image

* 2.2.网络波动 关键字是Read timed out

需要重新下载几次即可 或者切换一个网络稳定一点的
image

* 2.3.有些模块在下载使用之前需要提前配置指定的环境
1.Linux 和 Mac 系统:
	mkdir ~/.pip 建立一个文件夹
	cd ~/.pip 进入我们创建的文件夹中
	touch pip.conf 创建pip配置文件
	vi pip.conf 编辑pip配置文件,写入代码如下: [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple
ZZ 保存退出

2.Windows 系统:
	直接在 user 目录中创建一个pip目录,如:C:Userspip ,新建文件 pip.ini ,写入代码如下: [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple
  • 3.pycharm提供第三方模块下载快捷方式
    image

点击File>>>Settings>>>Project Day27>>>Python interpreter
image

image

爬虫演示

import requests

# 朝目标地址发送网络请求获取响应数据(相当于在浏览器地址栏中输入网址并回车)
# res = requests.get('http://www.redbull.com.cn/about/branch')
# print(res.content)  # 获取bytes类型的数据
# print(res.text)  # 获取解码之后的数据
# 为了避免每次执行程序都要发送网络请求  也可以提前保存页面数据到文件
# with open(r'hn.html','wb') as f:
#     f.write(res.content)

import re  导入re模块

# 读取页面数据
with open(r'hn.html', 'r', encoding='utf8') as f:
    data = f.read()
# 研究目标数据的特征 编写正则筛选
# 1.获取所有的分公司名称
company_name_list = re.findall('<h2>(.*?)</h2>', data)
# print(res)
# 2.获取所有的分公司地址
company_addr_list = re.findall("<p class='mapIco'>(.*?)</p>", data)
# print(company_addr_list)
# 3.获取所有的分公司邮箱
company_email_list = re.findall("<p class='mailIco'>(.*?)</p>", data)
# print(company_email_list)
# 4.获取所有的分公司电话
company_phone_list = re.findall("<p class='telIco'>(.*?)</p>", data)
# print(company_phone_list)
# 5.将上述四个列表中的数据按照位置整合
res = zip(company_name_list, company_addr_list, company_email_list, company_phone_list)
# 6.处理数据(展示 保存 excel)
for i in res:  # ('红牛杭州分公司', '杭州市上城区庆春路29号远洋大厦11楼A座', '310009', '0571-87045279/7792')
    print("""
    公司名称:%s
    公司地址:%s
    公司邮箱:%s
    公司电话:%s
    """ % i)

openpyxl模块

主要用于操作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.6 install openpyxl

openpyxl实操

from openpyxl import Workbook  # 导入模块

# 1.创建excel文件
wb = Workbook()                 # 创建excel文件
wb1 = wb.create_sheet('666')    # 创建文件名
wb2 = wb.create_sheet('666', 0) # 可以指定文件的位置
wb1.title = '777'               # 二次修改文件名
wb1.sheet_properties.tabColor = "1072BA"  # 修改颜色
wb.save(r'练习.xlsx')           # 保存文件

# 2.写入数据
# 方式一
wb1['a1'] = 'jason'
wb1['D3'] = '鸡哥'

# 方式二
wb1.cell(row=3, column=2, value='哈哈哈')  # 第三行第二列写入哈哈哈

# 方式三 批量写入
wb1.append(['name', 'pwd', 'age', 'gender', 'hobby'])
wb1.append(['joker', '666', '18', 'male', 'game '])
wb1.append(['joker', '666', '18', 'male', 'game '])
wb1.append(['None', '666', '18', 'male', ''])
wb1['F11'] = '=sum(B2:B7)'  # 求B2到B7的和

wb.save(r'练习.xlsx')  # 保存文件
 posted on 2022-07-20 17:41  Joker_Ly  阅读(293)  评论(0)    收藏  举报