python_re模块,网络爬虫,openpyxl模块

一、re模块

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

import re

res = re.findall('c', 'siocd dkac dakcc')
"""
findall通过正则表达式筛选出文本中所有符合条件的数据
"""
print(res)  # ['c', 'c', 'c', 'c']
res = re.finditer('c', 'siocd dkac dakcc')
"""
finditer与findall作用一致 只不过结果会被处理成迭代器对象 用于节省内存 
"""
print(res)  
#<callable_iterator object at 0x00000249D9A64B50>
res = re.search('c', 'siocd dkac dakcc')
"""
search通过正则表达式匹配到一个符合条件的内容就结束
"""
print(res)  # <re.Match object; span=(3, 4), match='c'>
print(res.group())  # c
res = re.match('c', 'siocd dkac dakcc')
"""
match通过正则表达式从头开始匹配  如果头部已经不符合 那么后面不走了
"""
print(res)  # None
obj = re.compile('d')
"""
compile能够提前准备好正则 之后可以反复使用 减少代码冗余
"""
print(re.findall(obj, 'asjd21hj13123j'))
print(re.findall(obj, 'fdh3jh45jhqjda'))
print(re.findall(obj, 'asdasdadadasda'))

二、re模块补充说明

1.分组

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

2.别名

res = re.search('a(?P<id>b)(?P<name>c)', 'abcabcabcabc')
print(res.group())  # abc
print(res.group(1))  # b
print(res.group('id'))  # b
print(res.group('name'))  # c

三、网络爬虫简介

  1. 什么是互联网 将全世界的计算机连接到一起组成的网络
  2. 互联网发明的目的是什么 将接入互联网的计算机上面的数据彼此共享
  3. 上网的本质是什么 基于互联网访问别人计算机上面的资源(有些计算机存在的意义就是让别人访问,这种类型的计算机我们也称之为服务器)
  4. 网络爬虫的本质 模拟计算机浏览器朝目标网址发送请求回去数据并筛选 只要是浏览器可以访问到的数据网络爬虫理论上都可以
  5. 获取海尔员工风采 https: // www.haier.com / careers /?to = 3 & spm = net.31722_pc.header_128853_20200630.4

四、第三方模块的下载

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

pip3.8 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解释器源文件(课下自行查阅)
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

五、爬取公司信息

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

#读取页面内容
with open(r'aa.html', 'r', encoding='utf8') as f:
    res = f.read()
#研究目标数据的特征 编写正则筛选
#1.获取所有的工种
work_sort = re.findall(' <span class="sd_text" sd_key="sd_branch">(.*?)</span>', res)
#2.获取所有的员工姓名
user_name = re.findall('<span class="sd_text" sd_key="sd_name">(.*?)</span>', res)
#3.获取所有的座右铭
words = re.findall(' <p class="item_word sd_text" sd_key="sd_title">(.*?)</p>', res)
#4.将上述三个列表中的数据按照位置整合
res1 = zip(work_sort, user_name, words)
print(list(res1))
#5.处理数据(展示保存excel)
for i in res1:
    print("""
    工作种类:%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.8 install openpyxl

七、openpyxl实操

  1. 创建excel文件
# 从openpyxl包中导入Workbook用于创建工作簿
from openpyxl import Workbook


# 使用Workbook()实例化一个对象wb,默认生成一个sheet名词的工作表
wb = Workbook()
# 修改默认sheet表的名称,使用wb.active获取活动表,默认只有一个
ws = wb.active
print('Sheet',ws)
ws.title = '帅哥表'
print('帅哥表',ws)
# 在工作簿中新建一个工作表,使用create_sheet()方法,第一个参数是工作表的名称,第二个是索引位置,0表示第一个
wb1 = wb.create_sheet('成绩表')
wb2 = wb.create_sheet('财务表')
wb3 = wb.create_sheet('校花表', 0)


wb1.title='表白墙'  # 支持二次修改
wb1.sheet_properties.tabColor = "1072BA"  # 修改工作簿颜色
  1. 写入数据
# 第一种写入方式
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)'
# 保存我们创建的工作表和工作簿到当前目录下,使用save()方法,参数为保存的工作簿名称
wb.save(r'Mytest.xlsx')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值