# coding=utf-8

# urllib
"""
使用python的urllib库去模拟浏览器请求网页,常用内容如下: urllib.request 发送HTTP请求
urllib.error 处理请求过程中出现的异常
urllib.parse 处理url
urllib.robotparser 解析robots.txt """ # 处理ssl异常
# import ssl
# ssl._create_default_https_context = ssl._create_unverified_context # 1.使用urllib.request请求网页
# import urllib.request # url = "https://www.jianshu.com"
# data = urllib.request.urlopen(url) # 请求url这个网页,返回值类型为对象
# print(data.read().decode()) # 打印网页源代码,默认为bytes类型,decode()后解码为utf-8 # print(data.geturl()) # 打印请求地址
# print(data.getcode()) # 返回请求结果的状态码 200表示请求正常
# print(data.info()) 返回请求url时的headers相关信息 # 2.模拟浏览器访问 添加headers头信息 '''
代码访问网页和电脑访问时传递的headers内容不同,
因此将headers修改为电脑访问网址时的headers,
就可以将代码伪装成浏览器来访问网页。
'''
# import urllib.request # url = "https://www.jianshu.com"
#
# # headers类型是字典,尽量使用关键字参数传参
# headers = {
# 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
# } # 在请求中添加已伪装好的headers
'''
urllib.request.Request接受一个data(字典类型)的参数,
当没有传data参数时,默认为get请求
需要post请求时,传一个data参数,会自动识别为post请求
data = {'a':1}
data = urllib.parse.urlencode(data).encode() # 编码为bytes类型
request = urllib.request.Request(url,data=data,headers=headers) #实例
'''
# request = urllib.request.Request(url, headers=headers)
#
# # 访问网站
# urllib.request.urlopen(request) # 3.cookie的使用,分三个步骤
"""
部分网站需药cookies信息才能登陆,urllib中提供携带cookie信息的请求
分三个步骤:
创建cookieJar对象
创建cookie处理器
安装处理器
"""
# import urllib.request
# import http.cookiejar
#
# url = "https://www.jianshu.com"
# 1.创建cookieJar对象
# cookie_jar = http.cookiejar.CookieJar() # 2.使用HTTPCookieProcessor创建cookie处理器,并以它为参数创建opener对象
# opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie_jar))
#
# 3.把opener变成urlopen
# urllib.request.install_opener(opener) # 此时发起的请求就已经携带了cookie信息
# data = urllib.request.urlopen(url)
# print(cookie_jar) # 4.设置代理 请求别人的网站
"""
一般网站可能存在反爬虫机制,最基础的反爬就是检测IP,
如果一个IP频繁出现,可能就会被识别为爬虫
因此,使用代理(就是利用别人的IP+端口)伪装自己的IP地址
分为三个步骤:
创建代理处理器
创建opener对象
安装处理器
"""
# import urllib.request # url = "http://httpbin.org/ip" # 用于测试ip地址的网站 # 使用代理时,将代理处理为一下格式
# proxy = {'http': '115.193.96.143:9000', 'https': '115.193.96.143:9000'} # 1.创建代理处理器
# proxies = urllib.request.ProxyHandler(proxy) # 2.创建opener对象
# opener = urllib.request.build_opener(proxies, urllib.request.HTTPHandler) # 3.安装
# urllib.request.install_opener(opener) # 此时,发起的请求就不是自己的ip地址,而是一个匿名的代理IP
# data = urllib.request.urlopen(url)
# print(data.read().decode()) # 5.异常处理urllib.error URLError(父类) HTTPError
"""
用于处理请求时发生的一些异常,常用的URLError和HTTPError
URLError用于处理请求地址或服务器不存在的情况
HTTPError用于服务器存在但是页面不存在的情况
"""
import urllib.error
import urllib.request # url = "http://www.1844hhjhhlkxxx.com"
# try:
# urllib.request.urlopen(url)
# except urllib.error.URLError as e:
# print(e.reason) # 打印异常原因 # url = 'https://jianshu.com/p/sddfsdf'
# try:
# urllib.request.urlopen(url)
# except urllib.error.URLError as e:
# # 判断是否有code属性,如果有code属性说明是HTTPError
# if hasattr(e, "code"):
# print("HTTPError")
# # 判断是否有reason属性,如果有reason属性说明是URLError
# elif hasattr(e, "reason"):
# print("URLError") # 5.urllib.parse 解析url
"""
对请求的url进行一定的处理
"""
import urllib.parse # urllib.parse.urljoin() # 拼接字符串,对url进行一定的拼接
# urllib.parse.urlencode() # 将字典转化为转字符串
# urllib.parse.urlquote() # url解码
# urllib.parse.urlunquote() # url编码 # 请求地址中含有中文时,需要将其编码为ascii格式
# url = 'http://www.baidu.com/s?wd={}'.format(urllib.parse.urlunqote('爬虫')) # data = {'a': 1, 'b': 2}
# print(urllib.parse.encode(data))
#
# print(urllib.parse.urljoin('http://www.baidu.com/', 's?wd=')) # 6.urllib3请求库 # import urllib3
# http = urllib3.PoolManager() # 发送请求,参数为请求方法和请求地址
# r = http.request("GET", 'https://www.jianshu.com', redirect=False) # 关闭重定向

请求库urllib和urllib3的更多相关文章

  1. Python3编写网络爬虫01-基本请求库urllib的使用

    安装python后 自带urllib库 模块篇 分为几个模块如下: 1. urllib.request 请求模块 2. urllib.parse 分析模块 3. urllib.error 异常处理模块 ...

  2. Python 爬虫十六式 - 第二式:urllib 与 urllib3

    Python请求标准库 urllib 与 urllib3 学习一时爽,一直学习一直爽!   大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了什么是HTTP协议,那么这一次我们就要动 ...

  3. Python网络请求urllib和urllib3详解

    Python网络请求urllib和urllib3详解 urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了urlli ...

  4. Python3爬虫(三)请求库的使用之urllib

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.urllib库: 1. 是Python内置的HTTP请求库 2. 在Python2中,由urllib和urll ...

  5. python中urllib, urllib2,urllib3, httplib,httplib2, request的区别

    permike原文python中urllib, urllib2,urllib3, httplib,httplib2, request的区别 若只使用python3.X, 下面可以不看了, 记住有个ur ...

  6. 爬虫请求库——requests

    请求库,即可以模仿浏览器对网站发起请求的模块(库). requests模块 使用requests可以模拟浏览器的请求,requests模块的本质是封装了urllib3模块的功能,比起之前用到的urll ...

  7. urllib和urllib3

    urllib库 urllib 是一个用来处理网络请求的python标准库,它包含4个模块. urllib.request---请求模块,用于发起网络请求 urllib.parse---解析模块,用于解 ...

  8. 爬虫(一)—— 请求库(一)requests请求库

    目录 requests请求库 爬虫:爬取.解析.存储 一.请求 二.响应 三.简单爬虫 四.requests高级用法 五.session方法(建议使用) 六.selenium模块 requests请求 ...

  9. python学习笔记——爬虫学习中的重要库urllib

    1 urllib概述 1.1 urllib库中的模块类型 urllib是python内置的http请求库 其提供了如下功能: (1)error 异常处理模块 (2)parse url解析模块 (3)r ...

随机推荐

  1. NetworkManager网络通讯_问题汇总(四)

    此篇来填坑,有些坑是unet自身问题,而大部分则是理解不准确造成的(或者unity定义太复杂) 问题一: isLocalPlayer 值一直是false 出现场景:NetworkLobbyPlayer ...

  2. Java多线程(十五):CountDownLatch,Semaphore,Exchanger,CyclicBarrier,Callable和Future

    CountDownLatch CountDownLatch用来使一个线程或多个线程等待到其他线程完成.CountDownLatch有个初始值count,await方法会阻塞线程,直到通过countDo ...

  3. 随机数产生器:Random.Next

    Random类是一个产生伪随机数字的类,它的构造函数有两种,一个是直接New Random(),另外一个是New Random(Int32),前者是根据触发那刻的系统时间做为种子,来产生一个随机数字, ...

  4. DRF之认证组件、权限组件、频率组件使用方法总结

    认证组件格式: from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions ...

  5. springboot(3)——配置文件和自动配置原理详细讲解

    原文地址 目录 概述 1. 配置文件作用 2.配置文件位置 3.配置文件的定义 3.1如果是定义普通变量(数字 字符串 布尔) 3.2如果是定义对象.Map 3.3如果是定义数组 4.配置文件的使用 ...

  6. python基础-元组(tuple)及内置方法

    元组-tuple 用途:用于存储多个不同类型的值,但是不能存储可变类型数据 定义方法:用小括号存储数据,数据与数据之间通过逗号分隔,元组中的值不能改变. 注意: 1.定义元组时,如果里面只有一个值,在 ...

  7. 通过 Django Pagination 实现简单分页

    作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 当博客上发布的文章越来越多时,通常需要进行分页显示,以免所有的文章都堆积在一个页面, ...

  8. 前端与算法 leetcode 1. 两数之和

    目录 # 前端与算法 leetcode 1. 两数之和 题目描述 概要 提示 解析 解法一:暴力法 解法二:HashMap法 算法 传入[1, 2], [11, 1, 2, 3, 2]的运行结果 执行 ...

  9. Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示

    目录管理命令ls:列出指定目录下的内容格式: ls [OPTION]... [FILE]...   -a:显示所有文件包括隐藏文件   -A:显示除.和..之外的所有文件   -l,--long:显示 ...

  10. Requests库使用总结

    概述 Requests是python中一个很Pythonic的HTTP库,用于构建HTTP请求与解析响应 Requests开发哲学 Beautiful is better than ugly.(美丽优 ...