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. GIT使用笔记一:GIT初始化配置

    本人系统环境:centos6.5 下 LNMP centos下git安装很简单sudo yum install gitOK 可先进行git 的全局配置 用户信息 git config --global ...

  2. jq:jQuery库文件jquery.scrollLoading.js使用方法

    图片延迟加载,滚动到哪里加载到哪里: 1:头部加载库文件 <script type="text/javascript" src="/js/jquery.scroll ...

  3. NET Core学习方式(视频)

    NET Core学习方式(视频) ASP.NET Core都2.0了,它的普及还是不太好.作为一个.NET的老司机,我觉得.NET Core给我带来了很多的乐趣.Linux, Docker, Clou ...

  4. js和jq中常见的各种位置距离之offsetLeft/clientLeft/scrollLeft (一)

    offsetLeft offsetTop offsetWidth offsetHeight offsetLeft:元素的边框的外边缘距离与已定位的父容器(offsetparent)的左边距离(不包括元 ...

  5. 转Keil 中使用 STM32F4xx 硬件浮点单元

    Keil 中使用 STM32F4xx 硬件浮点单元一.前言有工程师反应说 Keil 下无法使用 STM32F4xx 硬件浮点单元, 导致当运算浮点时运算时间过长,还有 一些人反应不知如何使用芯片芯片内 ...

  6. CentOS 6.2安装配置LAMP服务器(Apache+PHP5+MySQL)

    准备篇:   1.配置防火墙,开启80端口.3306端口    vi /etc/sysconfig/iptables    -A INPUT -m state --state NEW -m tcp - ...

  7. 第十九章 排查和调试Web程序 之 防止和排查运行时问题

    1. 概述 常见的几种运行时问题包括 错误数据.慢于预期的响应.未知行为 或者 未处理的异常. Visual Studio 提供了 排查.跟踪 和 日志 等工具 来帮助排查系统的问题.有些情况还需要插 ...

  8. $.ajax同步/异步(async:false/true)

    虽然说ajax用来执行异步请求的比较多,但有时还是存在需要同步执行的情况的. 比如:我需要通过ajax取执行请求以返回一个值,这个值在ajax后面是需要使用到的,这时就不能用异步请求了.这时候就需要使 ...

  9. zTree使用随笔

    最近开发过程中,需要写一个公司人员组织架构的树状图,后来选用了依赖jQuery的zTree插件来实现,主要是该插件功能齐全,性能稳定,个性化编辑方便,遂选用了这个插件.我记录了一下根据自身需求定制化修 ...

  10. mui页面间传接值例子

    传值页面index.html <!DOCTYPE html><html><head> <meta charset="utf-8"> ...