Python3爬虫一之(urllib库)
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库)的更多相关文章
- 第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础
第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础 在urllib中,我们一样可以使用xpath表达式进行信息提取,此时,你需要首先安装lxml模块 ...
- 第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解
第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解 封装模块 #!/usr/bin/env python # -*- coding: utf- ...
- 第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用
第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理 使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置build_opener ...
- 第三百二十八节,web爬虫讲解2—urllib库爬虫—状态吗—异常处理—浏览器伪装技术、设置用户代理
第三百二十八节,web爬虫讲解2—urllib库爬虫—状态吗—异常处理—浏览器伪装技术.设置用户代理 如果爬虫没有异常处理,那么爬行中一旦出现错误,程序将崩溃停止工作,有异常处理即使出现错误也能继续执 ...
- 第三百二十七节,web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求
第三百二十七节,web爬虫讲解2—urllib库爬虫 利用python系统自带的urllib库写简单爬虫 urlopen()获取一个URL的html源码read()读出html源码内容decode(& ...
- 爬虫入门之urllib库详解(二)
爬虫入门之urllib库详解(二) 1 urllib模块 urllib模块是一个运用于URL的包 urllib.request用于访问和读取URLS urllib.error包括了所有urllib.r ...
- 爬虫常用的 urllib 库知识点
urllib 库 urllib 库是 Python 中一个最基本的网络请求库.它可以模仿浏览器的行为向指定的服务器发送请求,同时可以保存服务器返回的数据. urlopen() 在 Python3 的 ...
- 爬虫入门之urllib库(一)
1 爬虫概述 (1)互联网爬虫 一个程序,根据Url进行爬取网页,获取有用信息 (2)核心任务 爬取网页 解析数据 难点 :爬虫和反爬虫之间的博弈 (3)爬虫语言 php 多进程和多线程支持不好 ja ...
- 爬虫基础(1):urllib库
urllib库 urllib库是python中的一个基本网络请求库.用于模拟浏览器的行为,向指定服务器发送请求,并接收返回的数据. 在python3中所有的网络请求相关函数都集中在urllib.req ...
- Python爬虫入门之Urllib库的高级用法
1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...
随机推荐
- GIT使用笔记一:GIT初始化配置
本人系统环境:centos6.5 下 LNMP centos下git安装很简单sudo yum install gitOK 可先进行git 的全局配置 用户信息 git config --global ...
- jq:jQuery库文件jquery.scrollLoading.js使用方法
图片延迟加载,滚动到哪里加载到哪里: 1:头部加载库文件 <script type="text/javascript" src="/js/jquery.scroll ...
- NET Core学习方式(视频)
NET Core学习方式(视频) ASP.NET Core都2.0了,它的普及还是不太好.作为一个.NET的老司机,我觉得.NET Core给我带来了很多的乐趣.Linux, Docker, Clou ...
- js和jq中常见的各种位置距离之offsetLeft/clientLeft/scrollLeft (一)
offsetLeft offsetTop offsetWidth offsetHeight offsetLeft:元素的边框的外边缘距离与已定位的父容器(offsetparent)的左边距离(不包括元 ...
- 转Keil 中使用 STM32F4xx 硬件浮点单元
Keil 中使用 STM32F4xx 硬件浮点单元一.前言有工程师反应说 Keil 下无法使用 STM32F4xx 硬件浮点单元, 导致当运算浮点时运算时间过长,还有 一些人反应不知如何使用芯片芯片内 ...
- CentOS 6.2安装配置LAMP服务器(Apache+PHP5+MySQL)
准备篇: 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp - ...
- 第十九章 排查和调试Web程序 之 防止和排查运行时问题
1. 概述 常见的几种运行时问题包括 错误数据.慢于预期的响应.未知行为 或者 未处理的异常. Visual Studio 提供了 排查.跟踪 和 日志 等工具 来帮助排查系统的问题.有些情况还需要插 ...
- $.ajax同步/异步(async:false/true)
虽然说ajax用来执行异步请求的比较多,但有时还是存在需要同步执行的情况的. 比如:我需要通过ajax取执行请求以返回一个值,这个值在ajax后面是需要使用到的,这时就不能用异步请求了.这时候就需要使 ...
- zTree使用随笔
最近开发过程中,需要写一个公司人员组织架构的树状图,后来选用了依赖jQuery的zTree插件来实现,主要是该插件功能齐全,性能稳定,个性化编辑方便,遂选用了这个插件.我记录了一下根据自身需求定制化修 ...
- mui页面间传接值例子
传值页面index.html <!DOCTYPE html><html><head> <meta charset="utf-8"> ...