网络爬虫模块+excel表格模块

网络爬虫模块

第三方模块的下载与使用

第三方模块:
别人写的模块 一般情况下功能都特别强大

如果想使用第三方模块 第一次使用必须先下载后面才能反复使用(等同于内置模块)

下载第三方模块的方式

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

image

image

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

  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/
    
  5. 修改仓库地址

    1. 第一种
      一次修改全部解释器pip都可使用
      image

      image

      需要写入文件内的

      [global]
      index-url = https://pypi.tuna.tsinghua.edu.cn/simple
      

      修改完毕后保存,然后重新打开IDE工具,CMD,解释器环境,即可使用国内仓库下,速度嘎嘎快

    2. 第二种
      针对pycharm修改

      image

      image

      image

网络爬虫模块之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)


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

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(
    '<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_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)


自动化办公领域之openpyxl模块

  1. excel文件的后缀名问题提

    1. 03版之前
      文件名.xls
    2. 03版之后
      文件名.xlsx
  2. 操作excel表格的第三方模块

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

    2. openpyxl最近几年比较火的操作excel表格的模块

      03版之前兼容较差

    3. ps:还有很多操作excel表格的模块 甚至涵盖了上述的模块pandas模块,也是一个非常强大的模块

  3. 在使用一个陌生的模块的时候

    1. 学会看官方文档
    2. 查看官方教程
  4. openpyxl操作

'''
    Author:clever-cat
    time  :2022/10/26-19:29
'''

from openpyxl import workbook

wb = workbook.Workbook()  # 创建一个excel文件
# 可以在一个excel文件内创建多个工作蒲
del wb['Sheet']  # 删除默认创建的sheet表单

sheet1 = wb.create_sheet('富婆通讯录', 0)  # 创建表单 第一个参数是指定表单位置
sheet2 = wb.create_sheet('学生名单')
sheet3 = wb.create_sheet('舔狗名单')
sheet4 = wb.create_sheet('海王名单')

sheet1.title = '富婆信息'

# 添加数据的方式3
sheet1.append(['地址', '姓名', '爱好', '手机号'])  # 添加数据到表格

# 添加数据的方式1
sheet1['E1'] = '生日'

# 添加数据的方式2
sheet1.cell(1, 6, value='习惯')

for i in range(4):
    sheet1.append([k for k in range(1, 7)])

# 填写数学公式
sheet1.cell(6, 6, value='=SUM(A2:F5)')
# 修改工作蒲背景颜色
sheet1.sheet_properties.tabColor = '1072BA'

# 保存excel文件
wb.save(r'tel.xlsx')

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

"""

import pandas

data = [i for i in range(1, 7)]
data_dict = {
    '地址': data,
    '姓名': data,
    '爱好': data,
    '手机号': data,
    '生日': data,
    '习惯': data
}

datas = pandas.DataFrame(data_dict)

datas.to_excel('tt.xlsx')

"""
excel软件正常可以操作的数据集在10万左右,一旦数据集过大 软件操作几乎无效
需要使用代码操作  pandas模块
"""
posted @ 2022-10-26 21:26  clever-cat  阅读(56)  评论(0编辑  收藏  举报