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 的属性. 首先,打开我们的浏览 ...
随机推荐
- mysql 无法启动 unkown command
1. https://serverfault.com/questions/490656/mysql-not-starting-error-usr-sbin-mysqld-unknown-option- ...
- 078 Subsets 子集
给定一组不同的整数 nums,返回所有可能的子集(幂集).注意事项:该解决方案集不能包含重复的子集.例如,如果 nums = [1,2,3],结果为以下答案:[ [3], [1], [2], ...
- 牛客网Java刷题知识点之什么是异常、异常处理的原理是什么、为什么要使用异常、异常体系、运行时异常、普通异常、自定义异常、异常链
不多说,直接上干货! 在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考虑所有的因素,这就是所谓的智者千虑必有一失.同样的道理,计算机的世界也是不完美的,异常情况随时都会发 ...
- java分为 三类 ME,SE,EE
java分为 三类 ME,SE,EE Java SE=Java Standard EditionJava EE=Java Enterprise Edition Java ME=Java Mobile ...
- MyBatis配置文件之properties属性
MyBatis提供3个方式使用properties: 1.property子元素. 2.properties文件. 3.程序代码传递. properties属性系给系统配置一些运行参数,一般放在XML ...
- 牛客NOIP提高组(二)题解
心路历程 预计得分:100 + 40 + 30 = 170 实际得分:100 + 30 + 0 = 130 T2有一个部分分的数组没开够RE了. T3好像是思路有点小问题.. 思路没问题,实现的时候一 ...
- 不小心踩到的XMAPP的N种问题
1.在win10上的xampp集成环境中安装mongo扩展 按照网上搜索的下载对应文件后,在phpinfo里面还是找不到mongo的扩展信息,后面也是请教同事帮忙解决: http://www.theg ...
- SQL SERVER 2014 缺少Business Intelligence 解决办法
SQL SERVER 2014安装完所有的数据库工具后,缺少开发工具 Business Intelligence 之解决办法. https://msdn.microsoft.com/en-us/l ...
- SpringMVC+Thymeleaf 简单使用
一.简介 1.Thymeleaf 在有网络和无网络的环境下皆可运行,而且完全不需启动WEB应用,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果.浏览器解释 h ...
- HTML之基本语法(链接标签、路径的介绍和使用)
一.链接标签 语法:<a href="目标地址">这个标签上展示的内容</a> 作用:可以实现在当前页面跳转到新页面的操作 属性 1.target这个属性可 ...