爬虫之urllib

一、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的更多相关文章
- python 3.x 爬虫基础---Urllib详解
python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...
- Python爬虫之urllib模块2
Python爬虫之urllib模块2 本文来自网友投稿 作者:PG-55,一个待毕业待就业的二流大学生. 看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于Beautiful ...
- Python爬虫之urllib模块1
Python爬虫之urllib模块1 本文来自网友投稿.作者PG,一个待毕业待就业二流大学生.玄魂工作室未对该文章内容做任何改变. 因为本人一直对推理悬疑比较感兴趣,所以这次爬取的网站也是平时看一些悬 ...
- python爬虫之urllib库(三)
python爬虫之urllib库(三) urllib库 访问网页都是通过HTTP协议进行的,而HTTP协议是一种无状态的协议,即记不住来者何人.举个栗子,天猫上买东西,需要先登录天猫账号进入主页,再去 ...
- python爬虫之urllib库(二)
python爬虫之urllib库(二) urllib库 超时设置 网页长时间无法响应的,系统会判断网页超时,无法打开网页.对于爬虫而言,我们作为网页的访问者,不能一直等着服务器给我们返回错误信息,耗费 ...
- python爬虫之urllib库(一)
python爬虫之urllib库(一) urllib库 urllib库是python提供的一种用于操作URL的模块,python2中是urllib和urllib2两个库文件,python3中整合在了u ...
- python爬虫之urllib库
请求库 urllib urllib主要分为几个部分 urllib.request 发送请求urllib.error 处理请求过程中出现的异常urllib.parse 处理urlurllib.robot ...
- 练手爬虫用urllib模块获取
练手爬虫用urllib模块获取 有个人看一段python2的代码有很多错误 import re import urllib def getHtml(url): page = urllib.urlope ...
- Python爬虫之urllib.parse详解
Python爬虫之urllib.parse 转载地址 Python 中的 urllib.parse 模块提供了很多解析和组建 URL 的函数. 解析url 解析url( urlparse() ) ur ...
- 爬虫---request+++urllib
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕 ...
随机推荐
- Navicat 连接MySQL时出现1251错误的解决方案
我用的MySQL版本是8.0.11,比较新的MySQL版本中采用的加密方式与旧的不同,从而导致1251错误. 解决方案:打开终端连接上数据库,执行以下语句,问题解决.(自己遇到过的坑,亲测有效) US ...
- centos7常用命令
系统命令 shutdown -h now # 关机 shutdown -r now # 重启 reboot # 重启 systemctl status firewalld # 查看防火墙状态 syst ...
- python中常见的报错,总结一下,以后看。
AttributeError 试图访问一个对象没有的属性,比如,乔峰.nameIOError 输入.输出异常:基本上无法打开文件ImportError 无法引入模块或者是包:基本上是路径问题,或者是名 ...
- 0. General-purpose tools (通用工具 8个)
http://en.wikipedia.org/wiki/Netcat这个简单的实用程序通过TCP或UDP网络连接读写数据. 它被设计为一个可靠的后端工具,可以直接或轻松地使用其他程序和脚本驱动. 同 ...
- 最新版SEMCMS_PHP_3.5 过滤不严导致sql注入
一.漏洞分析 在分析过程中看到网上已经有人发现semcms V2.4存在过滤不严导致sql注入的漏洞,不知道咋还没改,而且最新版过滤的关键字更少了. 首先查看首页文件index.php的代码 < ...
- JavaList列表的一些方法
import java.util.ArrayList;import java.util.Iterator;import java.util.List; public class Test1 { pub ...
- lua 匹配空白符
lua 支持的所有字符类: . 任意字符%s 空白符 空白字符一般包括空格.换行符\n.制表符\t以及回到行首符\r%p 标点字符%c 控制字符%d 数字%x 十六进制数字%z 代表0的字符% ...
- PythonStudy——迭代器 iterator
# 迭代器对象: 可以不用依赖索引取值的容器# 可迭代对象:可以通过某种方法得到迭代器对象 # 迭代器优点:可以不用依赖索引取值# 迭代器缺点:只能从前往后依次取值 可迭代对象 # 可迭代对象:有__ ...
- C# 程序修改config文件后,不重启程序刷新配置ConfigurationManager
基本共识: ConfigurationManager 自带缓存,且不支持 写入. 如果 通过 文本写入方式 修改 配置文件,程序 无法刷新加载 最新配置. PS. Web.config 除外:Web. ...
- dbca建库--linux上使用vnc图形化安装oracle10g版本
选择创建数据库 配不配置em,自己决定,我们选择配置 配置下面账户密码,在项目中,下面账户肯定是不相同的,我们这里输入相同的,密码为oracle10g 选择文件系统存放(asm和字符设备暂时不能存放) ...