urllib库是python3的内置HTTP请求库。

ython2中urllib分为 urllib2、urllib两个库来发送请求,但是在python3中只有一个urllib库,方便了许多。

urllib库官方文档地址:https://docs.python.org/3/library/urllib.html

urllib库包含四个模块:

  request: 最基本的request请求模块,用来模拟的发送请求

  error: 异常处理模块用来捕获异常

  parse: 提供了许多URL处理方法,比如拆分、解析、合并

  robotparser: 用来识别网站的robot.txt文件

发送请求:request下的urlopen()方法

import urllib.request
url = 'http://xa.meituan.com/meishi/'
response = urllib.request.urlopen(url)
print(response.read().decode())

得到的response是一个HTTPResponse类型的对象,包含了 read(), readinto(), getheader(name), getheaders(), fileno()等方法和msg, version, status, debuglevel, closed等属性。

使用urlopen()方法是也可以传递一些参数,如data, timeout 等

data参数:

  data是可选参数,如果在请求中想要添加data参数, data参数必须用bytes()将其转化为bytes类型,并且,如果传递了参数,那么请求方式就是POST类型(urlopen请求方式默认是get)

import urllib.request
import urllib.parse
data = bytes(urllib.parse.urlencode({'world':'Hello'}), encoding='utf-8')
#传递一个data字典,使用bytes方法将data转为bytes类型,bytes方法的第一个参数是str,所以使用urllib.parse.urlencode()方法将字典转为str,第二个参数是编码格式
url = 'http://xa.meituan.com/meishi/'
response = urllib.request.urlopen(url=url, data=data)
print(response.read().decode())

timeout参数:

  该参数用于设定超时时间。单位是秒。超时就会抛出异常。

import urllib.request
url = 'http://xa.meituan.com/meishi/'
response = urllib.request.urlopen(url=url, timeout=1)
print(response.read().decode())

其他参数:

  context参数, 必须是ssl.SSLCentext类型, 用来指定SSL设置。

  cafile参数和capath参数分别指定CA证书与他的路径。

request下的Request方法:

Request的构造方法:

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

import urllib.request
url = 'http://xa.meituan.com/meishi/'
request = urllib.request.Request(url=url)
response = urllib.request.urlopen(request)
print(response.read().decode())

origin_req_host: 请求方的host名称或者IP地址。

unverifiable:表示这个请求是否是无法验证的,默认是False,意思是

Handler

urllib,request.BaseHandler类。他是所有Handler的父类。

下面各种子类继承父类。

  HTTPDefaultErrorHandler: 用于处理HTTP请求

  HTTPRedirectHandler: 用于重定向。

  HTTP Cookie Processor:用于处理Cookies

  ProxyHandler:用于设置代理。

  HTTPPasswordMgr:用于管理密码。

  HTTPBasicAuthHandler: 用于认证管理。

URL:  scheme + netloc + path +    parms + query + fragment

协议         域名   访问路径   参数    查询条件     锚点

Python3爬虫一之(urllib库)的更多相关文章

  1. 第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础

    第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础 在urllib中,我们一样可以使用xpath表达式进行信息提取,此时,你需要首先安装lxml模块 ...

  2. 第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解

    第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解 封装模块 #!/usr/bin/env python # -*- coding: utf- ...

  3. 第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用

    第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理 使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置build_opener ...

  4. 第三百二十八节,web爬虫讲解2—urllib库爬虫—状态吗—异常处理—浏览器伪装技术、设置用户代理

    第三百二十八节,web爬虫讲解2—urllib库爬虫—状态吗—异常处理—浏览器伪装技术.设置用户代理 如果爬虫没有异常处理,那么爬行中一旦出现错误,程序将崩溃停止工作,有异常处理即使出现错误也能继续执 ...

  5. 第三百二十七节,web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求

    第三百二十七节,web爬虫讲解2—urllib库爬虫 利用python系统自带的urllib库写简单爬虫 urlopen()获取一个URL的html源码read()读出html源码内容decode(& ...

  6. 爬虫入门之urllib库详解(二)

    爬虫入门之urllib库详解(二) 1 urllib模块 urllib模块是一个运用于URL的包 urllib.request用于访问和读取URLS urllib.error包括了所有urllib.r ...

  7. 爬虫常用的 urllib 库知识点

    urllib 库 urllib 库是 Python 中一个最基本的网络请求库.它可以模仿浏览器的行为向指定的服务器发送请求,同时可以保存服务器返回的数据. urlopen() 在 Python3 的 ...

  8. 爬虫入门之urllib库(一)

    1 爬虫概述 (1)互联网爬虫 一个程序,根据Url进行爬取网页,获取有用信息 (2)核心任务 爬取网页 解析数据 难点 :爬虫和反爬虫之间的博弈 (3)爬虫语言 php 多进程和多线程支持不好 ja ...

  9. 爬虫基础(1):urllib库

    urllib库 urllib库是python中的一个基本网络请求库.用于模拟浏览器的行为,向指定服务器发送请求,并接收返回的数据. 在python3中所有的网络请求相关函数都集中在urllib.req ...

  10. Python爬虫入门之Urllib库的高级用法

    1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...

随机推荐

  1. Java EE学习笔记(十)

    MyBatis与Spring的整合 1.整合环境搭建 1).要实现MyBatis与Spring的整合,很明显需要这两个框架的JAR包,但是只使用这两个框架中所提供的JAR包是不够的,还需要其他的JAR ...

  2. docker系列(二):镜像

    1 引言 将docker与汽车生产线类比,如果说docker引擎是汽车生产车间,那么容器就是最终的产品——汽车,而本节要介绍的镜像就如同汽车设计图纸,其重要性不言而喻——只有有了设计图(镜像),才能生 ...

  3. Android Bitmap(位图)详解

    一.背景 在Android开发中,任何一个APP都离不开图片的加载和显示问题.这里的图片来源分为三种:项目图片资源文件(一般为res/drawable目录下的图片文件).手机本地图片文件.网络图片资源 ...

  4. <Android 应用 之路> 天气预报(一)

    Android天气预报客户端 设计思路 欢迎界面,版本号,应用名 + 数据后台加载(所有城市的信息获取) 数据加载完成后跳转到显示界面,显示所有查询到的城市的天气信息 欢迎界面和天气显示界面分别为单独 ...

  5. 修复使用<code>XmlDocument</code>加载含有DOCTYPE的Xml时,加载后增加“[]”字符的错误

    C# LINQ TO XML - Remove “[]” characters from the DTD header http://stackoverflow.com/questions/12358 ...

  6. ORACLE中能否找到未提交事务的SQL语句

      在Oracle数据库中,我们能否找到未提交事务(uncommit transactin)的SQL语句或其他相关信息呢?  关于这个问题,我们先来看看实验测试吧.实践出真知. 首先,我们在会话1(S ...

  7. gd调试命令,gdb调试core文件

    使用 gcc -g test.c -o test.out 编译程序,只有加-g参数才支持gdb调试: 然后 gdb ./test.out 运行可执行文件,进入gdb调试模式(gdb),在括号后面的输入 ...

  8. Exchange DSAccess 事件分析

    本文介绍了如何使用事件 ID 2080 来帮助诊断 Exchange DSAccess 问题中所包含的信息. 许多朋友经常遇到Active Directory 域和Exchange 服务器通信问题.那 ...

  9. 恢复为TrustedInstaller权限

    每次我们要改动系统文件/文件夹时,都会被提示权限不够,而这个文件的所有者就是TrustInstaller.所以,就出现各种各样的教程,甚至傻瓜式的一键操作,让大家把自己设为文件的所有者,让自己得到最高 ...

  10. 为Oracle Clusterware修改公用及私有网络接口

    出于种种原因我们可能需要为已安装的Oracle集群软件修改其使用的公用或私有网络所使用的网络接口(How to Change Interconnect/Public Interface IP or S ...