python基础:第三方模块requests、openpyxl
目录
一、爬虫小练习
# 思路 1.直接拷贝网友源代码数据保存到本地 2.在pycharm中读取文件当作字符串处理 3.编写正则表达式来筛选我们想要的内容 import re # 1.文件操作读取文本内容 with open(r'redbull.html', 'r', encoding='utf8') as f: # 2 直接读取全部内,将全部内容绑定变量名data data = f.read() # 3 研究各部分数据的特征,编写相应的正则表达式 # <h2>红牛杭州分公司</h2><p class='mapIco'>杭州市上城区庆春路29号远洋大厦11楼A座</p><p class='mailIco'>310009</p><p class='telIco'>0571-87045279/7792</p></li><li "方法1:一次性获取每个公司全部的数据" # res = re.findall( # "<h2>(.*?)</h2><p class='mapIco'>(.*?)</p><p class='mailIco'>(.*?)</p><p class='telIco'>(.*?)</p></li><li", data) # # print(res) "方法2:分步分挨个获取最后统一整合" title_list = re.findall("<h2>(.*?)</h2>", data) # print(title_list) """ ['红牛杭州分公司', ... ,'红牛金丽衢代表处'] """ address_list = re.findall("<p class='mapIco'>(.*?)</p>", data) mail_list = re.findall("<p class='mailIco'>(.*?)</p>", data) telephone_list = re.findall("<p class='telIco'>(.*?)</p>", data) # 4 (处理信息)得到了公司名称、公司地址、公司邮编、公司电话这些信息的列表后,我们需要将其一一对应起来组合 res = zip(telephone_list, address_list, mail_list, telephone_list) # print(list(res)) # [('0571-87045279/7792', '杭州市上城区庆春路29号远洋大厦11楼A座', '310009', '0571-87045279/7792')...] # 5 将其写入txt文件中 with open(r'redbull.txt', 'w', encoding='utf8') as f: # 6 添加for循环,可以格式化输出 for data_tuple in res: print( """ 公司名称:%s 公司地址:%s 公司邮编:%s 公司电话:%s """ % data_tuple) f.write( """ 公司名称:%s 公司地址:%s 公司邮编:%s 公司电话:%s """ % data_tuple)
二、第三方模块的下载与使用
第三方模块,大佬写的模块,功能很多
1.下载第三方模块的方式
# 我们如果想使用第三方模块,第一次必须先下载后面才可以反复使用 1.pip工具 注意每个解释器都有pip工具 如果我们的电脑上有多个版本的解释器那么我们在使用pip的时候一定要注意到底用的是哪一个 否则极其任意出现使用的是A版本解释器然后用B版本的pip下载模块 为了避免pip冲突 我们在使用的时候可以添加对应的版本号 python27 pip2.7 python36 pip3.6 python38 pip3.8 下载第三方模块的句式 pip install 模块名 下载第三方模块临时切换仓库 pip install 模块名 -i 仓库地址 下载第三方模块指定版本(不指定默认是最新版) pip install 模块名==版本号 -i 仓库地址 2.pycharm提供快捷方式

2.下载第三方模块可能会出现的问题
1.报错并有警告信息 WARNING: You are using pip version 20.2.1; 原因在于pip版本过低 只需要拷贝后面的命令执行更新操作即可 d:\python38\python.exe -m pip install --upgrade pip 更新完成后再次执行下载第三方模块的命令即可 2.报错并含有Timeout关键字 说明当前计算机网络不稳定 只需要换网或者重新执行几次即可 3.报错并没有关键字 面向百度搜索 pip下载XXX报错:拷贝错误信息 通常都是需要用户提前准备好一些环境才可以顺利下载 4.下载速度很慢 pip默认下载的仓库地址是国外的 python.org 我们可以切换下载的地址为国内的地址 # 命令行操作 pip install 模块名 -i 仓库地址 """常用的国内仓库地址 清华大学 :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/"""

三、网络爬虫模块之requests模块
1.简介
requests模块能够模拟浏览器发送网络请求 # Python 内置了 requests 模块,该模块主要用来发 送 HTTP 请求 1.requests模块的语法 # 1 导入 requests 包 import requests # 2 发送请求 # 朝指定网址发送请求获取页面数据(等价于:浏览器地址栏输入网址回车访问) x = requests.get('http://www.redbull.com.cn/about/branch') # 3 返回网页内容 print(x.text) # 并非所有网站都是以utf8来进行字符编码的 2.requests模块语法的补充说明 # 1 获取bytes类型的网页数据(二进制) print(x.content) # 2 可以指定字符编号,已经获取bytes类型的网页数据(二进制) x.encoding = 'utf8' # 指定编码 print(x.text) # 获取字符串类型的网页数据(默认按照utf8)
requests模块的其他属性和方法:
2.网络爬虫实战之爬取*家二手房数据
""" 思路: 1.通过requests模块模拟浏览器向链家网站发送请求 2.返回网页内容 3.研究网页上的内容,编写对应的正则表达式 4.筛选出结果写入文件中 """ import requests import re # 链家网站:https://sh.lianjia.com/ershoufang/pudong/ # 1 通过requests模块获取链家网站的内容 web_lj = requests.get('https://sh.lianjia.com/ershoufang/pudong/') # 2 返回内容 data = web_lj.text # 3 通过正则表达式来匹配数据,匹配我们想要的结果 house_title_list = re.findall( 'data-is_focus="" data-sl="">(.*?)</a>', data) print(house_title_list) house_position_list = re.findall('<a href=".*?" target="_blank" data-log_index=".*?" data-el="region">(.*?)</a>', data) # print(house_position_list) house_street_list = re.findall('- <a href=".*?" target="_blank">(.*?)</a>', data) # print(house_street_list) house_info_list = re.findall('<div class="houseInfo"><span class="houseIcon"></span>(.*?)</div>', data) house_follow_list = re.findall('<div class="followInfo"><span class="starIcon"></span>(.*?)</div>', data) house_total_price_list = re.findall( '<div class="totalPrice totalPrice2"><i> </i><span class="">(.*?)</span><i>万</i></div>', data) house_unit_price_list = re.findall( '<div class="unitPrice" data-hid=".*?" data-rid=".*?" data-price=".*?"><span>(.*?)</span></div>', data) house_data = zip(house_title_list, house_position_list, house_street_list, house_info_list, house_follow_list, house_total_price_list, house_unit_price_list) # 4 创建文件保存数据 with open(r'sec_hand_house.txt','w',encoding='utf8') as f: for data in house_data: print(""" 房屋标题:%s 小区名称:%s 街道名称:%s 详细信息:%s 关注程度:%s 房屋总价:%s万元 房屋单价:%s """ % data ) f.write(""" 房屋标题:%s 小区名称:%s 街道名称:%s 详细信息:%s 关注程度:%s 房屋总价:%s万元 房屋单价:%s """ % data )
四、自动化办公领域之openpyxl模块
1.openpyxl模块简介
1.excel文件的后缀名问题
2003版本之前后缀名为: .xls
2003版本之后后缀名为: .xlsx
2.操作excel表格的第三方模块
1)xlwt
往表格中写入数据(兼容所有版本的excel文件)
2)wlrd
从表格中读取数据(兼容所有版本的excel文件)
3)**openpyxl
最近几年比较火热的操作excel表格的模块(对2003版本之前的兼容性较差 )
2.openpyxl操作
很多模块都会有官方文档,可以帮助我们了解如何使用该模块
Workbook
- workbook 相当于一个 Excel 文件档,每个被创建和打开的 Excel 文件都是独立的 Workbook 对象
- sheet Excel 文档中的表单,每个 Excel 文档至少需要一个 sheet
- cell 单元格,是不可分割的基本数据存储单元
from openpyxl import Workbook 1.创建一个excel文件 `Workbook`关键字 wb = Workbook() 2.在一个excel文件内创建多个工作簿sheet `create_sheet` wb1 = wb.create_sheet('宿舍名单') wb2 = wb.create_sheet('身份证信息') wb3 = wb.create_sheet('电话信息') 3.修改默认的工作簿位置 # 在想修改的工作簿添加索引参数 wb4 = wb.create_sheet('女朋友电话', 0) 4.二次修改工作簿名称 `工作簿名.title = '新命名'` wb4.title = '男神电话' wb4.sheet_properties.tabColor = "1072BA" 5.填写数据 1)wb4['A1'] = 'haha' 2)wb4.cell(row=3, column=1, value='jason') 3)类似表格的形式直接写入数据 wb4.append(['编号', '姓名', '年龄', '爱好']) # 表头字段 wb4.append([1, 'jason', 18, 'read']) wb4.append([2, 'kevin', 28, 'music']) wb4.append([3, 'tony', 58, 'play']) wb4.append([4, 'oscar', 38, 'ball']) wb4.append([5, 'jerry', 'ball']) wb4.append([6, 'tom', 88,'ball','哈哈哈']) 6.填写数据额公式 # 默认是公式本身,不会出现结果,需要用value参数指定才会获取计算结果 wb4['A5'] = '=sum(A1:A4)' wb4.cell(row=8, column=3, value='=sum(A1:A4)') 7.保存excel文件 wb.save(r'aaaa.xlsx')
excel软件正常可以打开操作的数据集数量在10万左右
一旦数据集过大,软件操作几乎无效需要使用pandas模块进行代码操作
-
模块openpyxl 主要用于数据的写入
-
模块pandas 擅长表单操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY