python27基础-re模块-网络爬虫-openpyxl模块

2022/7/21 14:24:57

本文主要是介绍python27基础-re模块-网络爬虫-openpyxl模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

今日学习

re 模块

第三方模块简介

网络爬虫实战

openpyxl模块

random模块

hashib模块

re模块

模块中,如果想用正则表达式,re模块是选择之一

名称 作用
re.findall() 通过正则表达式筛选出文本中所有符合条件的数据
re.finditer() 和re.findall()作用一样,只不过结果会被处理成迭代器对象,用于节省内存,可以通过for循环或者双下next取值
re.search() 通过正则表达式匹配一个符合条件的内容就结束
re.match() 通过正则表达式从头开始匹配,如果头部已经不符合,那么后面不走
re.compile() 能够提前准备好正则,之后可以反复使用,减少代码冗余
#-----------------------------练习-----------------------------------------------

import re
res = re.findall('a','jason oscar aaa')
print(res)              过滤出来的内容返回成list形式展示
----------执行结果------------
['a', 'a', 'a', 'a', 'a']


------------------【re.finditer】练习-------------------------------------

import re
res = re.finditer('a','jason oscar aaa')
print(res)								#查找出所有a,处理成迭代器对象。	
for i in res:							#通过for循环或者双下next取值
    print(i)					
----------执行结果------------
< callable_iterator object at 0x0000016217978760 >
<re.Match object; span=(1, 2), match='a'>
<re.Match object; span=(9, 10), match='a'>
<re.Match object; span=(12, 13), match='a'>
<re.Match object; span=(13, 14), match='a'>
<re.Match object; span=(14, 15), match='a'>


-----------------re.search练习-----------------------------------

import re
res = re.search('a','jason oscar aaa')
print(res)								#匹配出一个便结束查找
----------[执行结果]------------
<re.Match object; span=(1, 2), match='a'>


-----------------re.match练习---------------------------------------

import re
res = re.match('a','jason oscar aaa')
print(res) 							#从头第一个匹配,没有就返回None 和正则^相似
----------[执行结果]------------
None                       

-------------------re.compile('a')--------------------------------------
import re
obj = re.compile('a')
print(re.findall(obj,'asjd2aaa1hj13123j'))  
----------[执行结果]--------------------
['a', 'a', 'a', 'a']         #compile 能够提前准备好正则,之后可以反复使用减少代码冗余

re模块补充

--------------------1.不分组情况---------------------------------------------------

import re
res = re.findall('abc', 'abcabcabcabc')		#正常过滤出abc字符
print(res)
-------执行结果------------------------
['abc', 'abc', 'abc', 'abc']


-------------------2.分组并优先展示情况-------------------------------------------------

res1 = re.findall('a(b)c','abcabcabcabc')
print(res1)									#分组,用小括号将过滤数据分出来优先展示
-------执行结果------------------------
['b', 'b', 'b', 'b']

--------------------3.不分组情况---------------------------------------------------

import re
res = re.findall('a(?:b)c','abcabcabcabc')
print(res)								   #不分组,用小括号,括号内?:将过滤数据分出来优先展示
---------执行结果--------------------
['abc', 'abc', 'abc', 'abc']

---------------------4.起别名------------------------------------------------------

res = res.search('a(?P<id>b)(?P<name>c)','abcabcabcabc')
print(res.group())			#打印abc
print(res.group(2))    		#索引形式
# print(res.group('id'))	#将b的别名id
# print(res.group('name'))	#c的别名为 name   定义别名 ?P<别名>

网络爬虫简介

1.什么是互联网?
	将全世界的计算机链接到一起组成的网络
2.互联网目的?
	将接入互联网的计算机上的数据彼此共享
3.上网的本质是什么?
	基于互联网访问别人计算机上面的资源(有些计算机存在的意义就是让别人访问,这种类型的计算机我称为服务器)
4.网络爬虫的本质?
	模拟计算机浏览目标发送请求回数据,并筛选,只要是浏览器访问到的就饿可以访问到的数据网络,爬虫理论上都可以
5.获取红牛分公司数据?
	http://www.redbull.com.cn/about/branch

第三方模块的下载

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/
----------------【下载方式】-------------------------------------------
#多版本共存时。我一共安装了2.7和3.8所以做了环境区分
pip3.8 install 模块名 -i 源地址

#如果只有一个python解释器环境,执行以下即可/
pip   install 模块名 -i  源地址

pycharm 提供第三方模块下载快捷方式
  • pip 和pip3的区别

- pip 是一个现代的,通用的 [Python](https://baike.baidu.com/item/Python) 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。
- 如果系统中只安装了Python2,那么就只能使用pip。
- 如果系统中只安装了Python3,那么既可以使用pip也可以使用pip3,二者是等价的。
- 如果系统中同时安装了Python2和Python3,则pip默认给Python2用,pip3指定给Python3用。
  • 下载报错情况

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

2.网络波动 关键字是Read timed out
只需要重新下载几次即可 或者切换一个网络稳定一点的

## 3.有些模块在下载使用之前需要提前配置指定的环境
结合具体情况 百度搜索
  • 解释器下载第三方模块图

  • 下载第三方模块 requests
    windos 键 +R 输入cmd命令 打开命

image

image

  • pycharm 安装第三方模块图

爬取公司信息

image

image

pip  install  requests 
  • 练习

    # 朝目标地址发送网络请求获取响应数据(相当于在浏览器地址栏中输入网址并回车)
    ---------------------------不要一直请求某个网站---------------------------------------import requests
    import re 
    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)     #保存到本地的静态html       
    

    --需求-统计所有的红牛页面所有的公司信息电话,地址等/。

    import re
    
    #读取页面数据
    with open(r'hn.html','r',encoding='utf-8') as f:
        data = f.read()
        
    #获取所有分公司的名称
    company_name_list = re.findall('<h2>(.*?)</h2', data)
    company_email_list = re.findall("<p class='mailIco'>(.*?)</p>",data)
    company_add_list  = re.findall("<p class='mapIco'>(.*?)</p>",data)
    company_phpone_list = re.findall("<p class='telIco'>(.*?)</p>",data)
    print(company_phpone_list)
    res1 = zip(company_name_list,company_add_list,company_phpone_list,company_email_list)
    for i in res1:
        print("""
        公司名称:%s
        公司邮箱:%s
        公司地址:%s
        公司电话:%s
        """ %i)
    =====执行结果===========================
    公司名称:红牛杭州分公司
    公司邮箱:杭州市上城xxx
    公司地址:xxxxx
    公司电话:xxxxx
    

openpyxl模块

作用:主要用于操作excel表格

也是pandas底层操作表格的模块
在python中能够操作excel表格的模块有很多
openpyxl属于近几年比较流行的模块
openpyxl针对03版本之前的excel文件兼容性不好
xlwt、xlrd也可以操作excel表格
兼容所有版本的excel文件 但是使用方式没有openpyxl简单
  • 1.excel版本问题

    03版本之前 excel文件的后缀名 .xls
    03版本之后 excel文件的后缀名 .xlsx
    如果是苹果电脑excel文件的后缀 .csv
    
  • 利用openpyxl创建表格

    from openpyxl import Workbook
    wb = Workbook()
    wb1 = wb.create_sheet('成绩表')
    wb2 = wb.create_sheet('财务表')
    wb3 = wb.create_sheet('校花表',0)
    wb44 = wb.create_sheet('八嘎')
    wb.title = '舔狗表'
    wb.save(r'111.xlsx')
    
  • 写入数据

    2.写入数据
    	# 第一种写入方式
        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)'
    


这篇关于python27基础-re模块-网络爬虫-openpyxl模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程