爬虫简介与excel表格操作
爬虫简介与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.丁磊:用户是互联网服务的根本。为用户提供什么样的服务,用户需要什么样的服务,互联网需要什么样的用户,市场份额等等,我个人觉得用户是我们互联网服务的最重要的出发点之一。
第三方模块下载
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')
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
代码操作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")
爬虫简介与excel表格操作的更多相关文章
- python对Excel表格操作
操作场景,给一个Excel表格随机生成10万个手机号码 python中常见的对Excel操作模块 xlwt module 将数据写入Excel表 xlrd module 读取Excel表格 xlsxw ...
- python excel表格操作
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- python操作excel表格(xlrd/xlwt)
最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...
- VS2010 C++ 操作Excel表格的编程实现
转载请注明原文网址: http://www.cnblogs.com/xianyunhe/archive/2011/09/25/2190485.html 通过VC实现对Excel表格的操作的方法有多种, ...
- qt 操作excel表格
自己编写的一个Qt C++类,用于操作excel表格,在Qt中操作excel需在.pro中增加CONFIG+=qaxcontainer配置. 1.打开Excel:objExcel = new QAx ...
- 【转】经典!python中使用xlrd、xlwt操作excel表格详解
最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...
- Python操作excel表格
用Python操作Excel在工作中还是挺常用的,因为毕竟不懂Excel是一个用户庞大的数据管理软件 注:本篇代码在Python3环境下运行 首先导入两个模块xlrd和xlwt,xlrd用来读取Exc ...
- php操作excel表格的导入和导出
前言:对于excel大家肯定熟悉不过了的,那么我们在日常的业务中应该是有对这些文件的导入导出操作的 类的下载:composer require phpoffice/phpexcel,其中Classes ...
- Python 利用Python操作excel表格之openyxl介绍Part2
利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart() ...
随机推荐
- 《C Primer Plus》第六版笔记--4~6章
目录 第四章 字符串和格式化输入/输出 第五章 运算符.表达式和语句 第六章 C控制语句:循环 虽然匆匆忙忙,但还是要做笔记,虽然大概都知道...... 挑一些容易忘记的地方 第四章 字符串和格式化输 ...
- 使用JavaCV实现读取视频信息及自动截取封面图
概述 最近在对之前写的一个 Spring Boot 的视频网站项目做功能完善,需要利用 FFmpeg 实现读取视频信息和自动截图的功能,查阅资料后发现网上这部分的内容非常少,于是就有了这篇文章. 视频 ...
- 解惑unittest框架中导入HTMLTestRunner模块后正常运行却无法生成HTML报告问题
1.HTMLTestRunner介绍 HTMLTestRunner是一个第三方的unittest HTML报告库,用于python单元测试框架的TestRunner.它是生成一个HTML报告,以一目了 ...
- Apache Poi 操作word,替换字符保留样式问题,runs段落混乱问题。
关于这个问题也是刚好遇到,一通搜索也没有找到类似的或者是有效的方法.下面介绍一下. 首先apache poi的引入 <dependency> <groupId>org.apac ...
- <%= %> <%- %> <% %>是什么意思?
.ejs文件后缀的数据渲染,这是服务器端的.把 .html改成 .ejs, (1)<%= %>相当于html中的innerTEXT,导出不包含标签 . (2)<%- %>相当于 ...
- 用Python实时获取Steam特惠游戏数据,我看看谁的钱包还有钱
前言 大家好鸭, 我是小熊猫 Steam大家应该不陌生吧?不知道的话就让我们来了解一下吧~(一下简称"S") S是由美国电子游戏商Valve于2003年9月12日推出的数字发行平台 ...
- git 删除、合并多次commit提交记录
合并多次记录 1. git log找到要合并的记录的数量. 2. git rebase -i HEAD~5 将最上面一个的记录选为pack,下面记录都改为s. ================= 删除 ...
- java反序列化漏洞专项
背景条件:java的框架,java的应用程序,使用序列化,反序列化操作非常多.在漏洞挖掘中,代码审计中,安全研究中,反序列化漏洞是个重点项,不可忽视.尤其是java应用程序的rce,10个里面有7个是 ...
- 现代化CSS
Less Sass less Sass 与Less相比SASS更适合大型,底层的开发 Compass CSS核心技巧 CSS应用 现代化CSS方法论 CSS分层与面向对象 为什么要对CSS分层 CSS ...
- 基于SqlSugar的开发框架循序渐进介绍(11)-- 使用TypeScript和Vue3的Setup语法糖编写页面和组件的总结
随着Vue3和TypeScript的大浪潮不断袭来,越来越多的Vue项目采用了TypeScript的语法来编写代码,而Vue3的JS中的Setup语法糖也越来越广泛的使用,给我们这些以前用弱类型的JS ...