爬虫简介与excel表格操作
re模块简介
1.在python中使用正则表达式的话那么re模块就是选择之一
import re # 导入re模块
2.在re模块中使用findall找到所有我们给他的值的并取出
res = re.findall('a', 'joseph has a male')
print(res) # ['a', 'a', 'a']
3.在re模块中使用finditer的时候会自动匹配所有符合条件的值,并将他存到一个内存地址中以防这个值数据过多过大就像我们的迭代器对象并且还节省内存空间
res1 = re.finditer('a', 'joseph has a male')
print(res1) # <callable_iterator object at 0x00000149534A5BB0>
4.在re模块中使用search时会自动帮你找到第一个符合你所需要检索的那么就会自动停止并且给你返回那个所检索到的位置信息
res2 = re.search('a', 'joseph has a male')
print(res2) # <re.Match object; span=(8, 9), match='a'>
5.在使用re模块的时候使用match时还蛮悲哀的,他会帮你检索第一个值是否是你所需要的值,如果不是的话那么自动中止,开摆了反正我帮你做了一步,在这一步我找不到我也无能为力了
res3 = re.match('a', 'joseph has a male')
print(res3) # None
6.在使用re模块的时候使用split时和在字典列表中一样都是给你做切割,只要遇到你给他的阀值那么他一旦遇到那么直接将他切割掉,快刀斩乱麻
res4 = re.split('a', 'joseph has a male')
print(res4) # ['joseph h', 's ', ' m', 'le']
7.在使用re模块的时候使用compile时那么就会将内部的索引值或者正则表达式存储起来,我们在下方也可以像变量名一样调用它即可,并且可以使用其内部的功能
res5 = re.compile('a')
print(re.findall(res5, 'joseph has a male')) # ['a', 'a', 'a']
print(re.findall(res5, 'kkjkhgfdres456rt7y8huijomkjhgdswertyhujgswedrfgasawsaaa' )) # ['a', 'a', 'a', 'a', 'a']
print(re.findall(res5, '13546123564856123a48956123548745120548725148512')) # ['a']
re模块分组
# 1.re模式分组
import re
# 2.在re模块中使用findall时,会将所有符合条件的全部取出
res = re.findall('joseph','josephjosephjosephjosephjoseph')
print(res) # ['joseph', 'joseph', 'joseph', 'joseph', 'joseph']
# 3.在re模块中使用findall时但是内部有分组的小括号时,会将所有的值都取出,这个不假,但是会将括号内部的优先展示
res1 = re.findall('jo(se)ph','josephjosephjosephjosephjoseph')
print(res1) # ['se', 'se', 'se', 'se', 'se']
# 4.在re模块中使用findall时并且内部存在一个分组,并且我们需要将分组与外面的一起展示出来,那么我们就需要使用(?:)来给他取消分组优先展示
res2 = re.findall('jo(?:se)ph', 'josephjosephjosephjosephjoseph')
print(res2) # ['joseph', 'joseph', 'joseph', 'joseph', 'joseph']
# 5.在re模块中使用search时会帮你找到第一个值但是内部有分组的时候那么也会帮你全部帮你展示,可以通过group索引取出
res3 = re.search('jo(se)ph','josephjosephjosephjosephjoseph')
print(res3.group()) # joseph
print(res3.group(0)) # joseph
print(res3.group(1)) # se
re模块起别名
import re
# 1.我们可以在分组的时候如果它内部分组很长或者很难记的时候我们可以通过索引或者起别名的方式来调用它(?P<别名>)
res = re.search('jo(?P<name>s)(?P<gender>e)ph', 'josephjosephjosephjosephjoseph')
print(res.group()) # joseph
print(res.group(0)) # joseph
print(res.group(1)) # s
print(res.group(2)) # e
print(res.group('name')) # s
print(res.group('gender')) # e
print(res.groups()) # ('s', 'e')
网络爬虫简介
1.什么是互联网
互联网又被称为国际网络,指的是网络与网络之间串联成一个庞大的网络,这些网络以一种通用的协议来相互连接,形成逻辑上的单一的巨型国际网络
2.发明互联网的作用
互联网的发明改变了我们的生活,将别人的生活,信息和想要分享的东西发布到网上,我们可以通过这些来看到别人所分享的数据
3.上网的本质
互联网的本质其实就是分享,互动,虚拟服务。而‘互联网+’的本质其实就是‘数据的流动’,互联网让数据流动了起来,在企业,人,设备三者之间产生了自由流动。通过数据将世界连接了起来。这就是互联网带来的革命性变化,互联网让人类分享信息,共同获利。
4.爬虫的本质
爬虫的本质其实就是模拟计算机向对方网址发送请求,并获取对方数据,将并筛选,将对方数据保存到自己的网盘中,理论上只要是互联网上的东西我们只要技术nb都可以爬取的到,不过有些东西不能乱爬,容易直接牢底坐穿,管吃管住,缝纫机训练,印刷中考试卷。
关于互联网的说法
关于互联网本质的问题,业界、学界有很多说法。
1.马化腾:互联网的本质就是促进信息沟通,使得信息交流和获取的效率更高、成本更低。
2.张朝阳:互联网的本质——信息的加工聚合,最终实现公众对于事件无限接近真实的了解。
3.马云:互联网的本质是“分享”。唯有分享才可能把资源都聚拢在一起,而唯有资源聚拢在一起,才可能降低沟通和交易的成本,世界在这个意义上被碾成了一块扁平的大饼,而以往依靠信息不对称而构筑起来的产业链便会被彻底地打破。
从创业一开始,阿里巴巴就通过免费服务的方式让信息以最快的速度聚集在一起,当“信息水库”建成之后,马云剩下来的问题就仅仅是如何“卖水”了,他用这个战略建成了阿里巴巴,后来又用这个战略如法炮制地建成了淘宝网。
4.百度CEO李彦宏:Web2.0的蓬勃发展主要是源于其内涵,首先回到互联网的本质上,互联网之所以蓬勃发展起来,是因为人和人之间需要更高效快速的信息沟通方式,所以互联网的第一次商业应用是以电子邮件Email开始的。后来,随着互联网技术不断升级,互联网可承载的内容越来越多,互联网才真正的焕发了其巨大的商业价值。
5.丁磊:用户是互联网服务的根本。为用户提供什么样的服务,用户需要什么样的服务,互联网需要什么样的用户,市场份额等等,我个人觉得用户是我们互联网服务的最重要的出发点之一。
![image](https://img2022.cnblogs.com/blog/2904194/202207/2904194-20220720213220138-720161709.png)
第三方模块下载
1.我们在使用第三方模块的时候必须先将他从第三方下载到电脑上才可以使用它,并且下载必须借助pip来下载
2.下载命令
pipx.x install 模块名
3.更换源地址
pip3.8 install -i 源地址
pycharm提供的第三方模块下载快捷方式
也可以直接查找地址并修改python源文件
4.下载报错
4.1.pip工具版本过低 直接拷贝提示信息里面的更新命令即可
python38 -m pip install --upgrade pip
4.2.网络波动 关键字是Read timed out
只需要重新下载几次即可 或者切换一个网络稳定一点的
4.3.有些模块在下载使用之前需要提前配置指定的环境
5.模块版本
pip3.8 install 模块名==版本号
pip3.8 install django==1.11.11
源地址
"""
我们可以切换下载的地址(源地址)
清华大学 :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/
中科院大源:https://pypi.mirrors.ustc.edu.cn/simple/
开源镜像: http://npm.taobao.org/mirrors
Node.js 镜像: http://npm.taobao.org/mirrors/node
alinode 镜像: http://npm.taobao.org/mirrors/alinode
phantomjs 镜像: http://npm.taobao.org/mirrors/phantomjs
ChromeDriver 镜像: http://npm.taobao.org/mirrors/chromedriver
OperaDriver 镜像: http://npm.taobao.org/mirrors/operadriver
Selenium 镜像: http://npm.taobao.org/mirrors/selenium
Node.js 文档镜像: http://npm.taobao.org/mirrors/node/latest/docs/api/index.html
NPM 镜像: https://npm.taobao.org/mirrors/npm/
electron 镜像: https://npm.taobao.org/mirrors/electron/
node-inspector 镜像: https://npm.taobao.org/mirrors/node-inspector/
"""
爬虫实操
import requests
res = requests.get('http://www.redbull.com.cn/about/branch')
# print(res.content)
# print(res.text)
with open(r'hema.html', 'wb')as f:
f.write(res.content)
with open(r'hema.html', 'r', encoding='utf8')as f:
data = f.read()
import re
company_name_list = re.findall('<h2>(.*?)</h2>', data)
print(company_name_list)
company_addr_list = re.findall("<p class='mapIco'>(.*?)</p>", data)
print(company_addr_list)
company_emile_list = re.findall("<p class='mailIco'>(.*?)</p>", data)
print(company_emile_list)
company_phone_list = re.findall("<p class='telIco'>(.*?)</p>", data)
print(company_phone_list)
res = zip(company_name_list, company_addr_list, company_emile_list, company_phone_list)
print(res)
from openpyxl import Workbook
wb = Workbook()
wb1 = wb.create_sheet('红牛信息', 0)
wb1.append(['公司名称', '公司地址', '公司邮箱', '公司电话'])
for company_info_xlsx in res:
print(company_info_xlsx)
wb1.append([company_info_xlsx[0], company_info_xlsx[1], company_info_xlsx[2], company_info_xlsx[3]])
wb.save('红牛.xlsx')
![image](https://img2022.cnblogs.com/blog/2904194/202207/2904194-20220720213005797-786353677.png)
excel文件简介
1.openpyxl模块
主要是用来操作excel表格,也是pandas底层操作表格的模块
2.在python中能够操作excel表格的模块有很多
openpyxl属于近几年比较流行的模块
openpyxl针对03版本之前的excel文件兼容性不好
xlwt、xlrd也可以操作excel表格
兼容所有版本的excel文件 但是使用方式没有openpyxl简单
3.excel版本问题
03版本之前 excel文件的后缀名 .xls
03版本之后 excel文件的后缀名 .xlsx
如果是苹果电脑excel文件的后缀 .csv
4.下载模块
pip3.8 install openpyxl
![image](https://img2022.cnblogs.com/blog/2904194/202207/2904194-20220720212841985-504968724.png)
代码操作excel实操
1.功能介绍
import openpyxl
# 创建一个Workbook对象
wb = openpyxl.Workbook()
# 创建一个Sheet对象
mySheet = wb.create_sheet(index=0, title="Mysheet")
# 再创建一个Sheet对象
anotherSheet = wb.create_sheet(index=2, title="AnotherSheet")
# 获取活动的sheet
activeSheet = wb.get_active_sheet()
# 设置活动表颜色
activeSheet.sheet_properties.tabColor = "205EB2"
# 设置anotherSheet的标题
anotherSheet.title = "test"
# 选择Cell对象(B4单元格并赋值)
directionCell = activeSheet.cell(row=4, column=2)
directionCell.value = "找到这个单元格"
# 还可以知道单元格的行列最大指
anotherSheet['A1'].value = "activesheet最大行:" + str(activeSheet.max_row)
anotherSheet['A2'].value = "activesheet最大列:" + str(activeSheet.max_column)
# 最后保存workbook
wb.save("test.xlsx")
![image](https://img2022.cnblogs.com/blog/2904194/202207/2904194-20220720212741484-292768992.png)