一、request模块

1.urlopen()     --返回值为HTTPResponse对象

urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
*, cafile=None, capath=None, cadefault=False, context=None)

参数:url必传

①data:传入之后请求变为POST,需转为bytes类型的参数

②timeout:设置超时时间,没有得到响应则抛出异常,异常类型为socket.timeout,默认为全局时间

③其他:context:设置SSL,ca:ca证书(使用HTTPS有用),cadefault已经弃用

2.Request类  --加入Headers信息,伪装成浏览器

class Request:
def __init__(self, url, data=None, headers={},
origin_req_host=None, unverifiable=False,
method=None):

参数:url必传

①data:bytes类型

②headers:字典类型,请求头,可通过修改User-Agent来伪装浏览器。等同于实例方法add_header(k,v)

③origin_req_host:请求方的host名称或ip地址

④unverifiable:没有权限为True,默认为False

⑤method:请求方法

3.高级用法

利用Handler来构建Opener。验证(HTTPBasicAuthHandler)、代理(ProxyHandler)、Cookies(HTTPCookieProcessor)

二、error模块

error模块定义了由request模块产生的异常

基类:URLError;子类:HTTPError

三、parse模块

1.urlparse() --返回ParseResult对象(scheme:'http',netloc='www,baidu.com',path='/index.html',params='user',query='id=5',fragment='comment')

http://www.baidu.com/index.html;user?id=5#comment 当url不包含params和query时,fragment会被解析为path的一部分

ParseResult实际上是一个元组,可以用索引或属性名来获取,如result[0],result.scheme

def urlparse(url, scheme='', allow_fragments=True):

参数:url必填

①scheme:协议(http,https),只有在url中不包含scheme信息时设置的才有效

②allow_fragments:是否忽略fragment,默认不忽略

2.urlunparse()

构造url,参数为一个可迭代对象如['http','www.baidu.com','index.htm','user','a=6','comment'],长度必须为6

3.urlsplit()

和urlparse()类似,不单独解析params,将params合并到path中

--返回SplitResult对象(scheme:'http',netloc='www,baidu.com',path='/index.html;user',query='id=5',fragment='comment')

4.urlunsplit()

与urlunparse()类似

构造url,参数为一个可迭代对象如['http','www.baidu.com','index.htm','a=6','comment'],长度必须为5

5.urljoin()

构造url,该方法会分析base的scheme,netloc和path并对新链接缺失的部分进行补充。

def urljoin(base, url, allow_fragments=True):

6.urlencode()

def urlencode(query, doseq=False, safe='', encoding=None, errors=None,
quote_via=quote_plus):

在构造GET请求参数的时候非常有用,将字典类型序列化为GET请求参数

from urllib.parse import urlencode

params={'name':'jyh','age':18}
base='http://www.baidu.com?'
url=base+urlencode(params)
print(url) #---> http://www.baidu.com?name=jyh&age=18

7.parse_qs()

反序列化,将GET请求参数转回字典

8.parse_qsl()

将GET参数转化为元组组成的列表

9.quote()

将内容转化为URL编码的格式

quote('壁纸') --->%E5%A3%81%E7%BA%B8

10.unquote()

URL解码

四、robotparser模块 --Robots协议

规定网页哪些可爬,哪些不可爬  

本文参考文献:[1]崔庆才.python3网络爬虫开发实战[M].北京:人民邮电出版社,2018:102-122.

爬虫之urllib的更多相关文章

  1. python 3.x 爬虫基础---Urllib详解

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...

  2. Python爬虫之urllib模块2

    Python爬虫之urllib模块2 本文来自网友投稿 作者:PG-55,一个待毕业待就业的二流大学生. 看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于Beautiful ...

  3. Python爬虫之urllib模块1

    Python爬虫之urllib模块1 本文来自网友投稿.作者PG,一个待毕业待就业二流大学生.玄魂工作室未对该文章内容做任何改变. 因为本人一直对推理悬疑比较感兴趣,所以这次爬取的网站也是平时看一些悬 ...

  4. python爬虫之urllib库(三)

    python爬虫之urllib库(三) urllib库 访问网页都是通过HTTP协议进行的,而HTTP协议是一种无状态的协议,即记不住来者何人.举个栗子,天猫上买东西,需要先登录天猫账号进入主页,再去 ...

  5. python爬虫之urllib库(二)

    python爬虫之urllib库(二) urllib库 超时设置 网页长时间无法响应的,系统会判断网页超时,无法打开网页.对于爬虫而言,我们作为网页的访问者,不能一直等着服务器给我们返回错误信息,耗费 ...

  6. python爬虫之urllib库(一)

    python爬虫之urllib库(一) urllib库 urllib库是python提供的一种用于操作URL的模块,python2中是urllib和urllib2两个库文件,python3中整合在了u ...

  7. python爬虫之urllib库

    请求库 urllib urllib主要分为几个部分 urllib.request 发送请求urllib.error 处理请求过程中出现的异常urllib.parse 处理urlurllib.robot ...

  8. 练手爬虫用urllib模块获取

    练手爬虫用urllib模块获取 有个人看一段python2的代码有很多错误 import re import urllib def getHtml(url): page = urllib.urlope ...

  9. Python爬虫之urllib.parse详解

    Python爬虫之urllib.parse 转载地址 Python 中的 urllib.parse 模块提供了很多解析和组建 URL 的函数. 解析url 解析url( urlparse() ) ur ...

  10. 爬虫---request+++urllib

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕 ...

随机推荐

  1. 2018.5.3 docker

    # docker [TOC] ## docker概念 概念官网解释:[docker官网](https://www.docker.com/) 1. 开放平台 2. 容器技术 3. LXC(Linux C ...

  2. Lambda表达式中的GroupBy使用的正确姿势

    本实例适用于:将记录中的数据进行分组得到一个一对多模型数据Model 案例中的Model 注:UserDetailes 包含User的信息和其所属部门信息 需求:将UserDetailes 的记录分组 ...

  3. 二.Flask 学习模板

    Flask 为你配置 Jinja2 模板引擎.使用 render_template() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行. 至于模板渲染? 简单来说,就是将 ...

  4. 【mysql】Mha实现高可用数据库架构

    MySQL高可用平台需要达到的目标有以下几点: 1.数据一致性保证这个是最基本的同时也是前提,如果主备的数据的不一致,那么切换就无法进行,当然这里的一致性也是一个相对的,但是要做到最终一致性. 2.故 ...

  5. #Windows# Excel无法打开右键新建的spreasheet

    此问题由来已久. 原因是之前安装过wps,并且现在卸载了. 因此.xls与.xlsx这两个文件格式的新建模板的路径被改成了纸箱WPS Office模板的路径,从而导致无法Excel打开这个文件时报错 ...

  6. Stripes视图框架实现纯Java代码控制表现层参考文档

    https://blog.csdn.net/boonya/article/details/14101477 Stripes是一个开放源码的Web应用程序框架的基础上的模型 - 视图 - 控制器(MVC ...

  7. QT中资源文件的使用

    1.在工程中点右键,选添加文件: 在下一页中输入一个资源文件名,如uires,这样工程树下就会出现资源文件夹. 2.右键,选择“Open in Editor”打开它 3.添加或修改前缀名,前缀的作用类 ...

  8. 解决用低版本的客户端ORACLE 12提示ORA-28040的异常

    用低版本的客户端访问ORACLE 12,无法连接,提示信息为ORA-28040.解决办法如下: 1.把sqlnet.ora文件添加两行(或者修改),修改文件后直接生效,不需要重启服务和监听的: SQL ...

  9. python基础知识14---迭代器、生成器、面向过程编程

    阅读目录 一 迭代器 二 生成器 三 面向过程编程 一 迭代器 1 迭代的概念 #迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初 ...

  10. kettle使用小结----脚本启动

    初学kettle,使用kettle Spoon完成转换(ktr)或作业(kjb)的编写之后,执行作业可以在spoon中直接启动,因为我的需求是持续监控数据表的状态进行数据同步, 所以作业任务需要一直在 ...