首页 > 其他分享 >网络爬虫之requests模块,自动办公领域之openpyx模块

网络爬虫之requests模块,自动办公领域之openpyx模块

时间:2022-10-26 23:14:47浏览次数:43  
标签:wb wb1 openpyx 模块 Workbook home requests data

一、第三方模块的下载与使用

    第三方模块:别人写的模块,一般情况下功能都特别强大
    我们如果想使用第三方模块,第一次必须先下载,后面才可以反复使用(等同于内置模块)

下载第三方模块的方式 

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提供快捷方式

 

注意:下载第三方模块可能会出现的问题

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 仓库地址
   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/

 

二、网络爬虫模块之requests模块

    requests模块能够模拟浏览器发送网络请求

    导入模块:  import requests 

1. 朝指定网址发送请求获取页面数据(等价于:浏览器地址栏输入网址回车访问)

res = requests.get('http://www.redbull.com.cn/about/branch')

print(res.content)    # 获取bytes类型的网页数据(二进制)

res.encoding = 'utf8' # 指定编码
print(res.text)    # 获取字符串类型的网页数据(默认按照utf8)

2. 网络爬虫实战之爬取链家二手房数据

import re
import requests

res = requests.get('https://sh.lianjia.com/ershoufang/pudong/tt9/')
data = res.text

home_name_list = re.findall('<a href=".*?" target="_blank" data-log_index=".*?" data-el="region">(.*?) </a>',data)
home_street_list = re.findall('<div class="positionInfo"><span class="positionIcon"></span><a href=".*?" target="_blank" data-log_index=".*?" data-el="region">.*? </a>   -  <a href=".*?" target="_blank">(.*?)</a> </div>',data)
home_info_list = re.findall('<div class="houseInfo"><span class="houseIcon"></span>(.*?)</div>',data)
home_attention_list = re.findall('<div class="followInfo"><span class="starIcon"></span>(.*?)</div>',data)
home_unite_price = re.findall('<div class="unitPrice" data-hid=".*?" data-rid=".*?" data-price=".*?"><span>(.*?)</span></div></div>',data)

home_data = zip(home_name_list,home_street_list,home_info_list,home_attention_list,home_unite_price)

with open(r'home_data.txt', 'w',encoding='utf8') as f:

    for data in home_data:

        print("""
        1.房屋名称 : %s
        2.房屋街道 : %s
        3.房屋详情 : %s
        4.房屋关注度 : %s
        5.房屋价格 : %s
        """ % data)

        f.write("""
        1.房屋名称 : %s
        2.房屋街道 : %s
        3.房屋详情 : %s
        4.房屋关注度 : %s
        5.房屋价格 : %s
        """ % data)

 

三、自动化办公领域之openpyxl模块

  • excel文件的后缀名问题

             03版本之前        .xls

             03版本之后        .xlsx

  • 操作excel表格的第三方模块

          xlwt:往表格中写入数据、xlrd:从表格中读取数据:兼容所有版本的excel文件

          openpyxl:最近几年比较火热的操作excel表格的模块
                           03版本之前的兼容性较差

          pandas:涵盖了上述的模块

 

openpyxl操作

1.  创建文件与修改文件名称

Workbook() —创建 excel 文件

from openpyxl import Workbook

wb = Workbook()    # 创建了一个excle表格

wb.save(r'客户信息表.xlsx')    # 保存之后表格才会出现

双击打开如图:

 

在一个excel文件内创建多个工作簿(注意必须把之前创建的表格关掉之后才可以操作,不然会报错)

from openpyxl import Workbook

wb = Workbook()
wb1 = wb.create_sheet('客户名单1')
wb2 = wb.create_sheet('客户名单2')
wb3 = wb.create_sheet('客户名单3')

wb.save(r'客户信息表.xlsx')

双击打开如图:

 

还可以修改默认的工作簿位置

from openpyxl import Workbook

wb = Workbook()
wb1 = wb.create_sheet('客户名单1')
wb2 = wb.create_sheet('客户名单2')
wb3 = wb.create_sheet('客户名单3')
wb4 = wb.create_sheet('VIP客户', 0)   # 参数0表示的是工作薄位置 

wb.save(r'客户信息表.xlsx')

 

 

二次修改工作薄名称

from openpyxl import Workbook

wb = Workbook()
wb1 = wb.create_sheet('客户名单1')
wb2 = wb.create_sheet('客户名单2')
wb3 = wb.create_sheet('客户名单3')
wb4 = wb.create_sheet('VIP客户', 0)

wb4.title = '长期客户'    # 将‘VIP客户’修改为‘长期客户’

wb.save(r'客户信息表.xlsx')

 

 

 

2. 填写数据

填写数据的方式1:Worksheet[ ]

from openpyxl import Workbook

wb = Workbook() # 创建了一个excle表格
wb1 = wb.create_sheet('客户名单1')
wb1['A1'] = 666     # ['A1'] 代表的是该表中的 A1 位置,我们可以将数据直接赋值给它

wb.save(r'客户信息表.xlsx')

填写数据的方式2:Worksheet.cell()

from openpyxl import Workbook

wb = Workbook() # 创建了一个excle表格
wb1 = wb.create_sheet('客户名单1')
wb1.cell(row=3, column=1, value='Alex')    # 在第3行第1列写入数据

wb.save(r'客户信息表.xlsx')

填写数据的方式3:Worksheet.append() 可以同时写入多个数据

from openpyxl import Workbook

wb = Workbook()  # 创建了一个excle表格
wb1 = wb.create_sheet('客户名单1')

wb1.append(['编号', '姓名', '年龄', '爱好'])  # 表头字段
wb1.append([1, 'jason', 18, 'read'])
wb1.append([2, 'kevin', 28, 'music'])
wb1.append([3, 'tony', 58, 'play'])
wb1.append([4, 'oscar', 38, 'ball'])

wb.save(r'客户信息表.xlsx')

 

3. 填写数学公式

wb1['A1'] = 12
wb1['A2'] = 15
wb1['A3'] = 23
wb1['A4'] = 35
wb1['A5'] = '= sum(A1:A4)'      # 85

 

openpyx实战:

将前面爬取的房屋信息写入Excley文件:

import requests
res = requests.get('https://sh.lianjia.com/ershoufang/pudong/tt9/')
data = res.text

home_name_list = re.findall('<a href=".*?" target="_blank" data-log_index=".*?" data-el="region">(.*?) </a>',data)

home_street_list = re.findall('<div class="positionInfo"><span class="positionIcon"></span><a href=".*?" target="_blank" data-log_index=".*?" data-el="region">.*? </a>   -  <a href=".*?" target="_blank">(.*?)</a> </div>',data)

home_info_list = re.findall('<div class="houseInfo"><span class="houseIcon"></span>(.*?)</div>',data)

home_attention_list = re.findall('<div class="followInfo"><span class="starIcon"></span>(.*?)</div>',data)

home_unite_price = re.findall('<div class="unitPrice" data-hid=".*?" data-rid=".*?" data-price=".*?"><span>(.*?)</span></div></div>',data)


home_data = zip(home_name_list,home_street_list,home_info_list,home_attention_list,home_unite_price)

from openpyxl import Workbook
wb = Workbook()
wb1 = wb.create_sheet('房屋信息', 0)
wb1.append(['房屋名称','房屋街道','房屋详情','房屋关注度','房屋价格'])
for data in home_data:
    wb1.append(data)
wb.save(r'home_info.xlsx')

 openpyxl主要用于数据的写入,至于后续的表单操作它并不是很擅长,如果想做需要更高级的模块pandas

 

4. openpyxl读取数据

from openpyxl import load_workbook
# 1.指定读取的文件
wb = load_workbook(r'客户信息表.xlsx')
# 2.查看内部所有工作簿名称
print(wb.sheetnames)    # ['Sheet', '客户名单1']
# 3.指定某个工作簿
wb1 = wb['客户名单1']
# 4.读取工作簿相关操作
print(wb1.max_row)  # 获取最大数据行数 5
print(wb1.max_column)  # 获取最大数据列数 1
print(wb1['A1'].value)  # 读取单元格内容 12
print(wb1['A5'].value)  # 如果是公式 读取的公式  # = sum(A1:A4)

按行和列读取数据:

for i in wb1.rows:
     print([d.value for d in i])

for j in wb1.columns:
     print([d.value for d in j])

 

标签:wb,wb1,openpyx,模块,Workbook,home,requests,data
From: https://www.cnblogs.com/chen-ao666/p/16830455.html

相关文章