第三方模块的下载与使用 requests模块 openpyxl模块
阅读原文时间:2023年07月08日阅读:2

今日内容

第三方模块:
     别人写的魔魁啊 一般情况下都很强大 python中模块很多
如果想使用第三方模块 第一次必须先下载 后面就可以反复使用 =内置模块
下载第三方模块的方式:
     1.pip方式
       注意:
         每个解释器都有pip工具 如果我们电脑上有多个版本的解释器 我们在使用pip的时候要注意版本 否则极其容易出现pip与解释器版本不符 使用不了模块
       为了避免冲突 可以在pip后面加上解释器的版本号
       下载第三方模块句式
            pip install 模块名
       下载第三方模块临时切换仓库
            pip install 模块名 -i 仓库地址
       下载第三方模块指定版本(不指定就是最新版本)
            pip install 模块名 == 版本号 -i 仓库地址
     2.pycharm提供的快捷方式
            file → setting→project → python interprete 双击空白处 可以搜索想要下载的模块
 """
 下载第三方模块可鞥会出现的问题
 1.报错并由警告信息
      ARNING: 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 模块能够模拟浏览器发送网络请求

import requests

1.朝指定网址发送请求获取页面数据(等价于:浏览器地址栏输入网址回车访问)
res = requests.get('http://www.redbull.com.cn/about/branch')
print(res.content)  # 获取bytes类型的网页数据(二进制)
res.encoding = 'utf8'  # 指定编码
print(res.text)  # 获取字符串类型的网页数据(默认按照utf8)



import requests
import re

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

home_title_list = re.findall(
    '<a class="" href=".*?" target="_blank" data-log_index=".*?"  data-el="ershoufang" data-housecode=".*?" data-is_focus="" data-sl="">(.*?)</a>',
    data)
# print(home_title_list)
home_name_list = re.findall('<a href=".*?" target="_blank" data-log_index=".*?" data-el="region">(.*?) </a>', data)
# print(home_name_list)
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)
# print(home_street_list)
home_info_list = re.findall('<div class="houseInfo"><span class="houseIcon"></span>(.*?)</div>', data)
# print(home_info_list)
home_watch_list = re.findall('<div class="followInfo"><span class="starIcon"></span>(.*?)</div>', data)
# print(home_watch_list)
home_total_price_list = re.findall(
    '<div class="totalPrice totalPrice2"><i> </i><span class="">(.*?)</span><i>万</i></div>', data)
# print(home_total_price_list)
home_unit_price_list = re.findall(
    '<div class="unitPrice" data-hid=".*?" data-rid=".*?" data-price=".*?"><span>(.*?)</span></div>', data)
# print(home_unit_price_list)
home_data = zip(home_title_list, home_name_list, home_street_list, home_info_list, home_watch_list,
                home_total_price_list, home_unit_price_list)
with open(r'home_data.txt','w',encoding='utf8') as f:
    for data in home_data:
        print(
            """
            房屋标题:%s
            小区名称:%s
            街道名称:%s
            详细信息:%s
            关注程度:%s
            房屋总价:%s
            房屋单价:%s
            """%data
        )
        f.write("""
                房屋标题:%s
                小区名称:%s
                街道名称:%s
                详细信息:%s
                关注程度:%s
                房屋总价:%s
                房屋单价:%s\n
                """%data)


1.excel文件的后缀问题
  03版本之前
  .xls
  03版本之后
  .xlsx
2.操作excel表格的第三方模块
  xlwt往表格中写入数据、wlrd从表格中读取数据
    兼容所有版本的excel文件
  openpyxl最近几年比较火热的操作excel表格的模块
    03版本之前的兼容性较差
  ps:还有很多操作excel表格的模块 甚至涵盖了上述的模块>>>:pandas
3.openyxl
  '''学会看官方文档'''
    from openpyxl import Workbook
    # 创建一个excel文件
    wb = Workbook()
    # 在一个excel文件内创建多个工作簿
    wb1 = wb.create_sheet('学生名单')
    wb2 = wb.create_sheet('舔狗名单')
    wb3 = wb.create_sheet('海王名单')
    # 还可以修改默认的工作簿位置
    wb4 = wb.create_sheet('富婆名单', 0)
    # 还可以二次修改工作簿名称
    wb4.title = '高富帅名单'
    wb4.sheet_properties.tabColor = "1072BA"

    # 填写数据的方式1
    # wb4['F4'] = 666
    # 填写数据的方式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','哈哈哈'])

    # 填写数学公式
    # wb4.cell(row=1, column=1, value=12321)
    # wb4.cell(row=2, column=1, value=3424)
    # wb4.cell(row=3, column=1, value=23423432)
    # wb4.cell(row=4, column=1, value=2332)
    # wb4['A5'] = '=sum(A1:A4)'
    # wb4.cell(row=8, column=3, value='=sum(A1:A4)')

    # 保存该excel文件
    wb.save(r'111.xlsx')
"""
openpyxl主要用于数据的写入 至于后续的表单操作它并不是很擅长 如果想做需要更高级的模块pandas

import pandas

data_dict = {
    "公司名称": comp_title_list,
    "公司地址": comp_address_list,
    "公司邮编": comp_email_list,
    "公司电话": comp_phone_list
}
# 将字典转换成pandas里面的DataFrame数据结构
df = pandas.DataFrame(data_dict)
# 直接保存成excel文件
df.to_excel(r'pd_comp_info.xlsx')

excel软件正常可以打开操作的数据集在10万左右 一旦数据集过大 软件操作几乎无效
需要使用代码操作>>>:pandas模块
"""