对于互联网数据,Python 有很多处理网络协议的工具,urllib 是很常用的一种。

一、urllib.request,request 可以很方便的抓取 URL 内容。

  • urllib.request.urlopen(url)  返回请求 url 后的二进制对象·

    参数:url=‘http://www.baidu.com’,请求的 url。

       data=None,请求的数据,可有可无,bytes 类型。

       timeout=3,设置访问超时时间,可有可无

       cafile=None,HTTPS 请求 CA 证书

       capath=None,CA 证书 path

       context=None,指定 SSL 设置,可有可无,ssl.SSLContext 类型

  • urllib.request.Request()  把请求独立成一个对象,对请求参数的设定更方便灵活

    参数:url,请求 url。

       data=None,请求参数,可有可无

       headers={},请求 header 参数。

       origin_req_host=None,请求 host 或 IP

       unverifiable=False,表明请求是否无法验证,默认为 false

       method=None,请求方法,get、post、put 等

  • urllib.request.ProxyHandler()  设置代理,参数为 dict,如:{ 'http': '120.194.18.90:81'}
  • urllib.request.build_opener()  构建 Opener,参数为上面设置的代理
  • urllib.request.install_opener()  安装 Opener,参数为上面构建的 opener
  • urllib.request.HTTPCookieProcessor()  cookie 操作,参数为 http.cookiejar.CookieJar() 得到的 cookie
from urllib import request,parse

#url
url = 'http://fanyi.baidu.com/sug' #request data
data = {'kw': 'python'}
data = parse.urlencode(data).encode('utf-8') #proxy
proxy = {'http': '120.194.18.90:81'}
proxy_handler = request.ProxyHandler(proxy)
opener = request.build_opener(proxy_handler)
request.install_opener(opener) #headers = {
# 'Content-Length': len(data),
# 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0'
#} #req = request.Request(url=base_url, data=data, headers=headers)
req = request.Request(base_url, data) req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0') rsp = request.urlopen(req) result = rsp.read().decode('utf-8') print(result)
#rsp 的属性
print('返回数据类型: {}'.format(type(rsp))) print('返回数据信息: {}'.format(rsp)) print('header 信息: {}'.format(rsp.info())) print('header 信息: {}'.format(rsp.getheaders())) print('header 属性信息: {}'.format(rsp.getheader('Server'))) print('响应状态信息: {}'.format(rsp.status)) print('响应状态信息: {}'.format(rsp.getcode())) print('响应的 URL: {}'.format(rsp.geturl()))
#cookie 操作

from urllib import request
from http impot cookiejar #获取 cookie
cookie = cookiejar.CookieJar()
handler = request.HTTPCookieProcessor(cookie)
opener = request.build_opener(handler) rsp = opener.open('http://www.baidu.com')
res = rsp.read().decode('utf-8') print(res) #保存 cookie
#FileCookieJar、MozillaCookieJar、LWPCookieJar,不同的保存格式
filename = 'cookie.txt'
cookie = cookiejar.MozillaCookieJar(filename)
handler = request.HTTPCookieProcessor(cookie)
opener = request.build_opener(handler) rsp = opener.open('http://www.baidu.com') cookie.save(igonre_discard=True, ignore_expires=True) #使用 cookie
cookie cookiejar.MozillaCookieJar()
cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
handler = request.HTTPCookieProcessor(cookie)
opener = request.build_opener(handler)
rsp = opener.open('http://www.baidu.com') res = rsp.read().decode('utf-8')
print(res)

二、urllib.parse

  • urllib.parse.urlparse()  将 URL 解析成元组形式

    参数:

      url,访问 url

      scheme,解析协议,https、http

      allow_fragments=False,是够带有查询参数 

  • urllib.parse.urlunparse()  将元组拼接成完整 url
  • urllib.parse.urljoin()  拼接 url

  

#
url = 'https://www.baidu.com/s?'
qs = {'wd':'python'} qs = urllib.parse.urlparse(qs)
full_url = url + qs #
url = urllib.parse.urlparse('http://www.baidu.com/s?wd=python')
print(url) #
data = ['http', 'www.baidu.com', 's', 'wd=python']
print(urllib.parse.urlunparse(data)) #
print(urllib.parse.urljson('http://www.baidu.com', 'index.html'))

三、urllib.error

  通过 try...except 可以捕捉异常,error 分为 HTTPError,URLError

try:
res = urllib.request.urlopen(url).open().decode('utf-8')
print(res)
except urllib.error.URLError as e:
print(e)
except urllib.error.HTTPError as e:
print(e)
except Exception as e:
print(e)

四、urllib.robotparser

Python 爬虫 --- urllib的更多相关文章

  1. Python爬虫Urllib库的高级用法

    Python爬虫Urllib库的高级用法 设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Head ...

  2. Python爬虫Urllib库的基本使用

    Python爬虫Urllib库的基本使用 深入理解urllib.urllib2及requests  请访问: http://www.mamicode.com/info-detail-1224080.h ...

  3. python爬虫 urllib模块url编码处理

    案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为‘周杰伦'的页面数据) import urllib.request # 1.指定url url = 'https://www.sogou. ...

  4. python 爬虫 urllib模块 目录

    python 爬虫 urllib模块介绍 python 爬虫 urllib模块 url编码处理 python 爬虫 urllib模块 反爬虫机制UA python 爬虫 urllib模块 发起post ...

  5. python爬虫 - Urllib库及cookie的使用

    http://blog.csdn.net/pipisorry/article/details/47905781 lz提示一点,python3中urllib包括了py2中的urllib+urllib2. ...

  6. Python爬虫urllib模块

    Python爬虫练习(urllib模块) 关注公众号"轻松学编程"了解更多. 1.获取百度首页数据 流程:a.设置请求地址 b.设置请求时间 c.获取响应(对响应进行解码) ''' ...

  7. python爬虫-urllib模块

    urllib 模块是一个高级的 web 交流库,其核心功能就是模仿web浏览器等客户端,去请求相应的资源,并返回一个类文件对象.urllib 支持各种 web 协议,例如:HTTP.FTP.Gophe ...

  8. 对于python爬虫urllib库的一些理解(抽空更新)

    urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urllib库中,所有和网 ...

  9. Python爬虫--Urllib库

    Urllib库 Urllib是python内置的HTTP请求库,包括以下模块:urllib.request (请求模块).urllib.error( 异常处理模块).urllib.parse (url ...

随机推荐

  1. redis类与用法

    <?phpnamespace app\common\model; class Cache { public $redis = null; public function __construct( ...

  2. Windows下面安装并运行composer的步骤

    在composer官网下载得到:https://getcomposer.org/download/ Composer-Setup.exe 安装时注意:安装过程中,会提示你选择php安装目录.一直到ph ...

  3. Hue添加Spark notebook

    参考自https://blogs.msdn.microsoft.com/pliu/2016/06/18/run-hue-spark-notebook-on-cloudera/ 说明 使用Clouder ...

  4. 老男孩Python自动化运维视频

    链接:https://pan.baidu.com/s/1VLXJ0RZr39kpSGthkLkgmA 密码私聊我

  5. Matlab计算的FFT与通过Origin计算的FFT

    实验的过程中,经常需要对所采集的数据进行频谱分析,软件的选择对计算速度影响挺大的.我在实验过程中,通常使用Origin7.5来进行快速傅里叶变换,因为方便快捷,计算之后,绘出来的图也容易编辑.但是当数 ...

  6. sql server2016里面的json功能 - 转

    测试一下基本的,从查询结果里面构造一个json 的格式 create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int) ...

  7. 数列分块入门九题(二):LOJ6280~6282

    Preface 个人感觉这中间的三题是最水的没有之一 数列分块入门 4--区间加法,区间求和 这个也是很多数据结构完爆的题目线段树入门题,但是练分块我们就要写吗 修改还是与之前类似,只不过我们要维护每 ...

  8. Luogu P4016 负载平衡问题

    传说中的网络流24题之一,我刷的第二题菜. 据说这种东西做完了就可以有质的飞越?不过看着这些Luogu评级就有点蒙蔽. 首先我们看一下题目发现这不是均分纸牌的加强板吗,但是那个环的操作极大地限制了我的 ...

  9. 给 MSYS2 添加中科大的源

    最近一段时间不知怎么的,使用默认的 MSYS2 源升级软件或是安装新软件的特别的慢.所以就翻了翻国内的几个开源软件的镜像库,发现中科大的库里就有 MSYS2.所以就研究了一下,给 MSYS2 添加了中 ...

  10. Zabbix监控系统部署:前端初始化

    1. 概述 在上一篇博客<Zabbix监控系统部署:源码安装.md>中,主要进行了zabbix最新版的源码编译安装. (博客园地址:https://www.cnblogs.com/liwa ...