urllib.request 发送request和获取request的结果

urllib.error包含了urllib.request产生的异常

urllib.parse用来解析和处理Url

urllib.robotparse用来解析页面的robots.txt文件

urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)

url      可以是一个URL的字符串,也可以是一个Request对象

data     传给服务器的数据,支持字节类型(Bytes)、文件格式(file-like objects)和可迭代的对象(iterables),如果头文件中Content-Length 和 Transfer-Encoding 都没有提供,HTTPHandler就会根据data的类型来设置这些参数。 对于post类型的request method ,data应该以标准的application/x-www-form-urlencoded格式提供,urllib.parse.urlencode()方法可将 字典类或2元素的队列类 数据  转换成这种格式的Ascii字符码。入参data在使用前需要先编码成字节类型。

timeout  用于设置连接时长,只对HTTP,HTTPS,FTP类型的连接有效。

context  必须是一个ssl.SSLContext实例

cafile   指向的是单个包含CA 证书的文件

capath   指向的是这个hashed 认证文件的路径

class urllib.request.Request(url,data=None,headers={},origin_req_host=None,unverifiable=False,method=None)

headers          字典类型数据 也可以通过add_header()方法传入单个的key-value参数。 User-Agent ,通常用于标识请求所使用的浏览器(某些HTTP服务器只允许来自常用浏览器的请求);Content-Type,如果data参数被提供,就需要设置这个参数,如果没设置Content-Type,默认值为application/x-www-form-urlencoded

origin_req_host和unverifiable仅用来准确的处理第三方Http cookies:

origin_req_host 用户设置的原始请求的主机名或IP地址,例如果请求的是某html中的一张图片,则原始请求主机名为请求(包含该图片的)html的主机名或地址。

unverifiable    表明这个请求 是否 无法访问

method          表示请求方式的字符串,可通过get_method()获取它的值。在data没有提供的情况下,默认是GET,否则默认是POST。

response:

urlopen()返回的对象urllib.response  can work as a context manager,具有方法:

read(),readline()  基本的返回页面文本的方法

geturl() 返回根据根据实际页面定位的url地址,通常用来判断是否有发生重定向。

info() 返回页面的元信息,headers。

getcode() 返回这个response的http状态码

openers:获取URL的方法

通常我们使用默认的opener 的open方法: urllib.request.urlopen ()

如果需要个性化openers,就需要创建一个OpenerDirector实例。可以把不同的handlers传给OpenerDirector实例。

Handlers:Openers的处理器

所有的‘繁重’工作由handlers处理。不同的handlers处理不同事项,如通过特定协议打开URLs,HTTP重定向或获取一个不重定向的opener.

创建urllib.request.OpenerDirector 实例 可通过 urllib.request.build_opener([handler,...])   一步创建

或 a=OpenerDirector(),a.add_handler(some_handler_instance)   两步来创建,入参handlers必须是BaseHandler或其子类的实例。

安装opener , install_opener(opener)安装完后,会使这个opener作为全局的opener,urlopen()方法会按照这个自定义的opener来打开url。如果不希望urlopen()也使用这个方法的话,就不需要安装这个opener,直接使用OpenerDirector.open()来打开url,   opener 的open()方法与urlopen()方法具有相同的功能。

class  urllib.request.ProxyHandler(proxies=None)

使request请求通过这个代理,proxies是字典类型数据 {协议名:这个代理的URL},如果没有指定proxies,就会默认读取环境变量<protocol>_proxy中的proxies.如果没有设置代理的环境变量,windows系统下会从注册表内部的设置部分获取。为防止这种自动定位的proxies,可以传递一个空字典。

示例:代理方式的验证请求

proxy_handler = urllib.request.ProxyHandler({'http': 'http://www.example.com:3128/'})

proxy_auth_handler = urllib.request.ProxyBasicAuthHandler()

proxy_auth_handler.add_password('realm', 'host', 'username', 'password')

opener = urllib.request.build_opener(proxy_handler, proxy_auth_handler)

还是不知道这个代理的url是什么样的,要怎么写,有什么用。也许就是添加代理吧,可是这个代理在哪~

urllib.request各部分的小介:http://www.cnblogs.com/zknublx/p/6274599.html

class  urllib.request.ProxyBasicAuthHandler(password_mgr=None)

通过proxy.password_mgr处理认证的类,入参与urllib.request.HTTPPasswordMgr 相兼容,类似。

class  urllib.request.HTTPPasswordMgr

用于保持(realm,uri)到 (user,password)的映射

class  urllib.request.HTTPPasswordMgrWithDefaultRealm

用于保持(realm,uri)到 (user,password)的映射,如果realm是None,并且没有其他合适的范围,就会搜索所有范围。

urllib python3 请求、登录、下载网页的更多相关文章

  1. python3爬虫.3.下载网页图片

    目标,豆瓣读书, 下载页面书籍图片. import urllib.request import re #使用正则表达式 def getJpg(date): jpgList = re.findall(r ...

  2. Python下载网页的几种方法

    get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...

  3. Python3 根据m3u8下载视频,批量下载ts文件并且合并

    Python3 根据m3u8下载视频,批量下载ts文件并且合并 m3u8是苹果公司推出一种视频播放标准,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少 ...

  4. (Python基础教程之二十二)爬虫下载网页视频(video blob)

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  5. JavaWeb学习之转发和重定向、会话技术:cookie、session、验证码实例、URLConnection使用(下载网页)(4)

    1.转发和重定向 HttpServletResponse response 转发: RequestDispatcher dispatcher = request.getRequestDispatche ...

  6. windows 7 共享,未授予用户在此计算机上的请求登录类型

    刚刚重装了windows7,新下载的一个ghost版本,结果却不能共享,每次访问这台机器的共享都提示, 未授予用户在此计算机上的请求登录类型 这个情况好像是存在于win7访问win7,我用一台XP系统 ...

  7. http下载网页

    //http.c #include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/ ...

  8. C语言Linix服务器网络爬虫项目(二)项目设计和通过一个http请求抓取网页的简单实现

    我们通过上一篇了解了爬虫具体要实现的工作之后,我们分析得出的网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出 ...

  9. Lynx以纯文本的形式下载网页

    Lynx是一款基于命令行的web浏览器 [root@test88 ~]# yum install lynx -y [root@test88 ~]# lynx www.baidu.com 以纯文本的形式 ...

随机推荐

  1. 优秀的web工具网址

    1.百度开源的工具 https://www.baidu.com/home/news/data/newspage?nid=3868911095318333105&n_type=0&p_f ...

  2. 第 3 章 镜像 - 017 - RUN vs CMD vs ENTRYPOINT

    RUN.CMD 和 ENTRYPOINT 这三个 Dockerfile 指令看上去很类似,很容易混淆. 简单的说: RUN 执行命令并创建新的镜像层,RUN 经常用于安装软件包. CMD 设置容器启动 ...

  3. arcgis 浅入

    首先声明,此文只是用于学习,非商业用途!!20181226谷子弟留   有朋友需要用arcgis来学习分析图块,实现图块的分类和数据分析和统计. 于是网上找了找资源. http://pan.baidu ...

  4. Docker微容器+微服务将颠覆传统的软件架构

    从我的观点看:Docker是一个微容器,一个云计算的微PaaS容器,类似JVM但比其更强大的容器,直接基于Linux内核,支持各种语言,它比VM虚拟机更加轻量,能够在Linux或云计算IaaS等平台上 ...

  5. codeforces708b// Recover the String //AIM Tech Round 3 (Div. 1)

    题意:有一个01组成的串,告知所有长度为2的子序列中,即00,01,10,11,的个数a,b,c,d.输出一种可能的串. 先求串中0,1的数目x,y. 首先,如果00的个数a不是0的话,设串中有x个0 ...

  6. hadoop ssh 端口-ssh-copy-id详解

    ssh-copy-id详解 http://www.blogdaren.com/post-1815.html 服务器时常需要配置无密码的登录方式,最一般的设置方式如下: 使用ssh-keygen和ssh ...

  7. drf 需求案例1

    案例: 实现过程: 1. 创建一个项目: django-adim startproject dfr3 2.  创建 一个app    homwork python manage.py startapp ...

  8. ModelViewSet 视图集 实现接口

    一.创建项目 1.创建 项目 : django-admin startprojet drf 2. 创建 两个app   ------ app1 ,book python manage.py start ...

  9. python记录_day03 字符串

    python基本数据类型回顾 1. int 整数 2. str 字符串. 不会用字符串保存大量的数据 3. bool 布尔值. True, False 4. list 列表(重点) 存放大量的数据 5 ...

  10. spring boot(十二)打包部署

    有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发.调试.打包到最后的投产上线. 开发阶段 单元 ...