第三方模块的下载

pip工具

简介

pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。

注:pip 已内置于 Python 3.4 和 2.7 及以上版本,其他版本需另行安装。

pip使用注意

每个python解释器都有pip工具 如果我们的电脑上有多个版本的解释器那么我们在使用pip的时候一定要注意到底用的是哪一个 否则极其任意出现使用的是A版本解释器然后用B版本的pip下载模块。

pip位置和环境变量设置

pip工具在python/Scripts目录下:



Scripts目录下存在pip文件:



如果想在命令行窗口下使用pip,需要将这个目录添加到系统的环境变量中。



python多版本添加pip路径:

为了避免pip冲突 我们在使用的时候可以添加对应的版本号:
python27 pip2.7
python36 pip3.6
python38 pip3.8

在命令行查看pip版本:

pip安装第三方模块

下载第三方模块的句式:
pip install 模块名
下载第三方模块临时切换仓库
pip install 模块名 -i 仓库地址
下载第三方模块指定版本(不指定默认是最新版)
pip install 模块名==版本号 -i 仓库地址

下载模块:



指定仓库:(清华大学镜像仓库)



指定版本号:(默认是装最新版本 我们指定版本号3.0.5)

使用pip下载可能会遇到的问题

下载第三方模块可能会出现的问题
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/
阿里云:https://mirrors.aliyun.com/pypi/simple/
中国科学技术大学 :https://pypi.mirrors.ustc.edu.cn/simple/
华中科技大学:https://pypi.hustunique.com/
豆瓣源:https://pypi.douban.com/simple/
腾讯源:https://mirrors.cloud.tencent.com/pypi/simple
华为镜像源:https://repo.huaweicloud.com/repository/pypi/simple/

pycharm的第三方模块下载功能

pycharm提供更方便、更直观的下载第三方模块的方式,并且不需要输入命令。

打开settings:



点击加号:



下载第三方模块:



镜像仓库设置:

request模块

request基本使用

import requests

url = 'https://www.baidu.com'
headers = {
'User-Agent': ''
}
r = requests.get(url=url,headers=headers)
print(type(r)) # <class 'requests.models.Response'>
r.encoding = 'utf8' # 指定编码
print(type(r.text),type(r.content)) # content是转换为二进制码 注意text、content都是request包内的方法
print(type(r.status_code),r.status_code) # 状态码
print(type(r.cookies),r.cookies) # 获取cookies
print(type(r.history),r.history) # 请求历史

请求超时 timeout

time = requests.get('www.baidu.com',timeout=1) # 1秒内不响应 就抛出异常
time2 = requests.get('www.baidu.com',timeout=(5,30)) # 请求的两个阶段 连接和读取 我们分别设置这两个阶段的timeout 超过就报错

忽略ssl证书 verify=False

# 忽略ssl证书 SSLerror
responed = requests.get('www.xxx.com',verify=False) # 参数verify控制不验证 HTTPS HTTP

Session维持

# Session维持 模拟同一个会话 不用担心cookies
s = requests.Session() # 创建session对象
s.get('www.xxx.com', cookies='') # 设置好cookies
r = s.get('www.xxx.com/xxx.html') # 再次使用get时,这个cookies状态依旧保持

办公自动化 openpyxl模块

操作excel前言

# 1.excel文件的后缀名问题
03版本之前
.xls
03版本之后
.xlsx # 2.操作excel表格的第三方模块
xlwt往表格中写入数据、wlrd从表格中读取数据
兼容所有版本的excel文件
openpyxl最近几年比较火热的操作excel表格的模块
03版本之前的兼容性较差
ps:还有很多操作excel表格的模块 甚至涵盖了上述的模块>>>:pandas # 3.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') # 4.excel软件正常可以打开操作的数据集在10万左右 一旦数据集过大 软件操作几乎无效
需要使用代码操作>>>:pandas模块

create_sheet 创建工作簿

from openpyxl import Workbook

wb = Workbook()
print(wb) # 创建一个workbook对象 # <openpyxl.workbook.workbook.Workbook object at 0x000002BB500B7A30>
# 创建工作簿对象 worksheet
wb1 = wb.create_sheet('学生名单')
wb2 = wb.create_sheet('舔狗名单')
wb3 = wb.create_sheet('海王名单')
print(wb1) # <Worksheet "学生名单">
# 修改默认的工作簿位置
wb4 = wb.create_sheet('富婆名单', 0) # 将其修改为第一个工作簿
# 还可以二次修改工作簿名称
wb4.title = '高富帅名单'
# 修改工作簿的颜色
wb4.sheet_properties.tabColor = "1072BA"
# 保存该excel文件
wb.save(r'black.xlsx')

写入数据的三种方法

# 填写数据的方式1
wb4['F4'] = 666 # 将F4单元格写入666
# 填写数据的方式2
wb4.cell(row=3, column=1, value='miku') # row行 column列

工作簿的append方法(重要)

# 填写数据的方式3 (重要)
# 首先这是写入wb4 对应的工作簿内
# 一个append对应excel中的一行,会将列表元素一个一个放入这一行的单元格内。
wb4.append(['编号', '姓名', '年龄', '爱好']) # 表头字段
wb4.append([1, 'mike', 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','哈哈哈'])

输出结果:

链家二手房爬虫

复制指定节点的html代码

copy outerHTML:

import requests
import re
import time
from openpyxl import Workbook TIME = time.strftime('%Yy_%mm_%dd_%H%p_%Mm_%Ss') # 定义时间
KEY_WORD = '浦东新区' # 搜索关键字
PAGE_NUM = 10 # 定义一共爬多少页 上限100页
URL_TITLE = 'sh' # sh表示上海
HOUSE_SELECT = 'ershoufang' # 表示二手房
house_massage_big_list = [] # 最大的列表 所有的数据都会放入这个列表 if PAGE_NUM > 101:
raise Exception('数字过大 =。=') # 1.创建100个url
for page in range(1, PAGE_NUM + 1):
url = f'https://{URL_TITLE}.lianjia.com/{HOUSE_SELECT}/pg{page}rs{KEY_WORD}/'
print(url) try:
res = requests.get(url=url)
except requests.exceptions.ConnectionError:
raise requests.exceptions.ConnectionError('网络抽风了 =。=')
except Exception as massage:
print(massage, '未知异常')
else:
print()
print(f'网络状态码:{res.status_code}')
time.sleep(1) text = res.text
# 2.获取各种信息 放入不同的列表 一个列表30个数据 也就是一页30个数据
title_list = re.findall('<a class="" href=".*?" target="_blank"'
' data-log_index=".*?" data-el=".*?" data-housecode=".*?" data-is_focus="" '
'data-sl="">(?P<title>.*?)</a>', text, re.S) # 修饰符匹配空白字符 house_url_list = re.findall('<a class="" href="(.*?)" target="_blank"'
' data-log_index=".*?" data-el=".*?" data-housecode=".*?" data-is_focus="" '
'data-sl="">.*?</a>', text, re.S) site_list = re.findall(
'<div class="positionInfo"><span class="positionIcon"></span><a href=".*?" target=".*?" d'
'ata-log_index=".*?" data-el="region">(.*?)</a> - <a href=".*?" target="_blank">(.*?)<'
'/a> </div>', text, re.S) house_massage_list = re.findall('<div class="houseInfo"><span class="houseIcon"></span>(.*?)</div>', text, re.S) house_price_list = re.findall(
'<div class="totalPrice totalPrice2"><i> </i><span class="">(.*?)</span><i>.*?</i></div>'
, text, re.S) house_m2_price_list = re.findall(
'<div class="unitPrice" data-hid=".*?" data-rid=".*?" data-price=".*?"><span>(.*?)</spa'
'n></div>', text, re.S)
people_star_list = re.findall('<div class="followInfo"><span class="starIcon"></span>(.*?)</div>', text, re.S) # 3. 处理一下存放位置数据的列表 (龙柏二村, 龙柏) ————> 龙柏 龙柏二村
new_site_list = []
for house_site in site_list:
house, location = house_site
new_site = f'{location} {house}'
new_site_list.append(new_site)
site_list = new_site_list # print(len(title_list)) # 标题
# print(len(house_url_list)) # url
# print(len(site_list)) # 位置
# print(len(house_massage_list)) # 信息
# print(len(house_price_list)) # 总价
# print(len(house_m2_price_list)) # m2单价
# print(len(people_star_list)) # 关注 # 4.放入小列表
one_house_all_massage = list(
zip(title_list, house_url_list, site_list, house_massage_list, house_price_list, house_m2_price_list,
people_star_list))
print(f'数据量:{len(one_house_all_massage)}', '小列表') # 查看长度
print(one_house_all_massage) # 5.放入大列表
house_massage_big_list.extend(one_house_all_massage)
print(f'数据量:{len(house_massage_big_list)}', '大列表')
print(house_massage_big_list) # 保存数据到excel
excel_obj = Workbook() # 创建excel文件
# 1.创建工作簿
wb = excel_obj.create_sheet(f'{KEY_WORD}', 0)
# 2.添加表头
wb.append(['标题', 'url链接', '位置', '信息', '总价/万', '每平米的价格/元', '热度'])
# 3.将每个数据存入excel
for i in house_massage_big_list:
wb.append(i)
# 4.保存excel
excel_obj.save(f'{KEY_WORD}_{TIME}.xlsx')

第三方模块 request openpyxl的更多相关文章

  1. 日志、第三方模块(openpyxl模块)

    目录 1.日志模块 2.第三方模块 内容 日志模块 1.日志模块的主要组成部分 1.logger对象:产生日志 无包装的产品 import logging logger = logging.getLo ...

  2. logging、openpyxl、第三方模块下载

    ### 日志模块的组成部分 ```pythonimport logging# 1.logger对象:产生日志logger = logging.getLogger('转账记录')# 2.filter对象 ...

  3. Python基础之模块:5、 第三方模块 requests模块 openpyxl模块

    目录 一.第三方模块的下载与使用 1.什么是第三方模块 2.如何安装第三方模块 方式一:pip工具 方式二:pycharm中下载 3.注意事项 1.报错并有警告信息 2.报错,提示关键字 3.报错,无 ...

  4. 安装第三方模块方法和requests

    如何安装第三方模块 pip3         pip3 install xxxx          源码         下载,解压         进入目录 python setup.py inst ...

  5. Python-Windows下安装BeautifulSoup和requests第三方模块

    http://blog.csdn.net/yannanxiu/article/details/50432498 首先给出官网地址: 1.Request官网 2.BeautifulSoup官网 我下载的 ...

  6. python第三方模块精选

    python不但有着强大丰富的“内置电池”,同样的,第三方模块也是非常的多.目前收集了requests.paramiko.pymsql,以后会陆续添加: 一.requests Python标准库中提供 ...

  7. 玩玩 Nginx 2-----给Nginx添加第三方模块(动态更新upstream)

          接上一篇,我们在初始化安装的时候添加了nginx_lua模块,然后了解到nginx不可以动态加载模块,所以当你安装第三方模块的时候需要覆盖nginx文件.接下来一起看看如何安装nginx第 ...

  8. 详解:Python2中的urllib、urllib2与Python3中的urllib以及第三方模块requests

    在python2中,urllib和urllib2都是接受URL请求的相关模块,但是提供了不同的功能.两个最显著的不同如下: 1.urllib2可以接受一个Request类的实例来设置URL请求的hea ...

  9. centos6.5生产环境编译安装nginx-1.11.3并增加第三方模块ngx_cache_purge、nginx_upstream_check、ngx_devel_kit、lua-nginx

    1.安装依赖包 yum install -y gcc gcc-c++ pcre-devel openssl-devel geoip-devel 2.下载需要的安装包 LuaJIT-2.0.4.zip ...

  10. 第三百八十三节,Django+Xadmin打造上线标准的在线教育平台—第三方模块django-simple-captcha验证码

    第三百八十三节,Django+Xadmin打造上线标准的在线教育平台—第三方模块django-simple-captcha验证码 下载地址:https://github.com/mbi/django- ...

随机推荐

  1. centos7使用yum方式安装MySQL5.7

    yum -y localinstall http://mirrors.ustc.edu.cn/mysql-repo/mysql57-community-release-el7.rpm yum inst ...

  2. 手把手教你玩转 Gitea|使用 Docker 安装 Gitea

    使用 Docker 安装 Gitea 的过程非常简单的,堪比"一键式"安装.Gitea 安装使用系列教程将会从多种方式进行全方位的实操演示. 视频演示中使用腾讯云实验环境安装 Do ...

  3. CentOS 7.9 安装 redis-6.2.0

    一.CentOS 7.9 安装 redis-6.2.0 1 下载地址:https://download.redis.io/releases/redis-6.2.0.tar.gz 2 安装gcc来进行编 ...

  4. C++面向对象编程之类模板、函数模板等一些补充

    1.static数据 和 static函数: 对于 非static函数 在内存中只有一份,当类对象调用时,其实会有该对象的this pointer传进去,那个函数就知道要对那个对象进行操作: stat ...

  5. P1706 全排列问题 方法记录

    原题链接 全排列问题 题目描述 按照字典序输出自然数 \(1\) 到 \(n\) 所有不重复的排列,即 \(n\) 的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入格式 一个整数 \( ...

  6. Podman容器技术基础

    Podman容器技术基础 目录 Podman容器技术基础 简介 安装 基础命令 简介 Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用.Podman 提供与 Docker ...

  7. 齐博x1标签实例:标签如何调用论坛内容

    论坛的内容不像CMS其它模块可以直接用变量 {$rs.content} 因为论坛的内容数据表是放在另一个表的,单独分开的. 当前也是为了考试效率问题而这样设计的. 所以他的调用要用下面的代码 {:fu ...

  8. Educational Codeforces Round 138 (Rated for Div. 2) A-E

    比赛链接 A 题解 知识点:贪心. 注意到 \(m\geq n\) 时,不存在某一行或列空着,于是不能移动. 而 \(m<n\) 时,一定存在,可以移动. 时间复杂度 \(O(1)\) 空间复杂 ...

  9. 函数柯里化实现sum函数

    需求 实现sum函数,使其可以传入不定长参数,以及不定次数调用 //示例 console.log(sum(1,2)(3)()) //6 console.log(sum(2,3,4,5)(1,2)(3) ...

  10. python: m个位置,每个位置有n种可能,求所有排列结果

    >>> import itertools >>> m, n = 3, 2 >>> paths = list(itertools.product(r ...