Python 爬虫 --- urllib
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python 爬虫 --- urllib,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3671字,纯文字阅读大概需要6分钟。
内容图文
![Python 爬虫 --- urllib](/upload/InfoBanner/zyjiaocheng/1332/ac0f36f605754b51814e493b587058f0.jpg)
对于互联网数据,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) #使用 cookiecookie 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
# 1 url = ‘https://www.baidu.com/s?‘ qs = {‘wd‘:‘python‘} qs = urllib.parse.urlparse(qs) full_url = url + qs #2 url = urllib.parse.urlparse(‘http://www.baidu.com/s?wd=python‘) print(url) #3 data = [‘http‘, ‘www.baidu.com‘, ‘s‘, ‘wd=python‘] print(urllib.parse.urlunparse(data)) #4print(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
原文:https://www.cnblogs.com/rendd/p/10208182.html
内容总结
以上是互联网集市为您收集整理的Python 爬虫 --- urllib全部内容,希望文章能够帮你解决Python 爬虫 --- urllib所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。