python爬虫学习第二天
2017-07-26 22:44
357 查看
今天有点忙,待会儿还要出去一趟,只敲了一点,明天一定要把这节看完。
urllib.request高级特性
大家有没有发现,在上面的过程中,我们虽然可以构造Request,但是一些更高级的操作,比如Cookies处理,代理设置等操作我们该怎么办?
接下来就需要更强大的工具Handler登场了。
简而言之你可以把它理解为各种处理器,有专门处理登录验证的,有处理Cookies的,有处理代理设置的,利用它们我们几乎可以做到任何HTTP请求中所有的事情。
使用Handler构建更加高级的爬虫
首先介绍下urllib.request.BaseHandler,它是所有其他Handler的父类,它提供了最基本的Handler的方法,例如default_open()、protocol_request()等。
接下来就有各种Handler子类继承这个BaseHandler,举例几个如下:
HTTPDefaultErrorHandler用于处理HTTP响应错误,错误都会抛出HTTPError类型的异常。
HTTPRedirectHandler用于处理重定向。
HTTPCookieProcessor用于处理Cookie。
ProxyHandler用于设置代理,默认代理为空。
HTTPPasswordMgr用于管理密码,它维护了用户名密码的表。
HTTPBasicAuthHandler用于管理认证,如果一个链接打开时需要认证,那么可以用它来解决认证问题。
今天的练习:
练习5 使用Request函数作为urlopen()的参数,Request()可以帮助携带更多信息
练习6 给Request加一些参数
练习7 opener类 以及handler的基础使用
handler这里还不是很明白,明天再看,先把代码模仿着敲了
urllib.request高级特性
大家有没有发现,在上面的过程中,我们虽然可以构造Request,但是一些更高级的操作,比如Cookies处理,代理设置等操作我们该怎么办?
接下来就需要更强大的工具Handler登场了。
简而言之你可以把它理解为各种处理器,有专门处理登录验证的,有处理Cookies的,有处理代理设置的,利用它们我们几乎可以做到任何HTTP请求中所有的事情。
使用Handler构建更加高级的爬虫
首先介绍下urllib.request.BaseHandler,它是所有其他Handler的父类,它提供了最基本的Handler的方法,例如default_open()、protocol_request()等。
接下来就有各种Handler子类继承这个BaseHandler,举例几个如下:
HTTPDefaultErrorHandler用于处理HTTP响应错误,错误都会抛出HTTPError类型的异常。
HTTPRedirectHandler用于处理重定向。
HTTPCookieProcessor用于处理Cookie。
ProxyHandler用于设置代理,默认代理为空。
HTTPPasswordMgr用于管理密码,它维护了用户名密码的表。
HTTPBasicAuthHandler用于管理认证,如果一个链接打开时需要认证,那么可以用它来解决认证问题。
今天的练习:
练习5 使用Request函数作为urlopen()的参数,Request()可以帮助携带更多信息
# import urllib.request # import urllib.parse # import urllib.error # import socket # request = urllib.request.Request('https://python.org') # response = urllib.request.urlopen(request) # print(response.read().decode('utf-8'))
练习6 给Request加一些参数
# from urllib import request,parse # url1 = 'http://httpbin.org/post' # headers = { # 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)', # 'Host': 'httpbin.org' # } # dict = { # 'name': 'Germey' # } # data = bytes(parse.urlencode(dict),encoding = 'utf-8') # request1 = request.Request(url=url1,data=data,headers=headers,method='POST') # response = request.urlopen(request1) # print(response.read().decode('utf-8'))
练习7 opener类 以及handler的基础使用
from urllib.request import HTTPPasswordMgrWithDefaultRealm,HTTPBasicAuthHandler,build_opener from urllib.error import URLError # username = 'username' # password = 'password' # url = 'http://localhost:5000/' # p = HTTPPasswordMgrWithDefaultRealm() # p.add_password(None,url,username,password) # auth_handler = HTTPBasicAuthHandler(p) # opener = build_opener(auth_handler) # try: # result = opener.open(url) # html = result.read().decode('utf-8') # print(html) # pass # except Exception as e: # print(e.reason)
handler这里还不是很明白,明天再看,先把代码模仿着敲了
相关文章推荐
- python爬虫学习第三十天
- Python爬虫包 BeautifulSoup 学习(八) parent等应用
- Python爬虫(入门+进阶)学习笔记 1-4 使用Xpath解析豆瓣短评
- python爬虫系统学习十一:常见反爬虫机制与应对方法
- Python爬虫学习
- Python爬虫之框架学习
- Python 爬虫学习笔记之单线程爬虫
- Python 爬虫学习系列教程
- 【Python学习笔记(三)】:爬虫用到的知识点总结
- Python爬虫学习纪要(四):正则表达式1
- Python爬虫学习(单线程爬虫(一))
- Python爬虫库学习笔记-requests
- Web Scraping with Python 学习爬虫
- 使用python进行爬虫学习(一)
- Python实战:Python爬虫学习教程,获取电影排行榜
- Python爬虫包 BeautifulSoup 学习(四) bs基本对象与函数
- Python 编写新浪新闻网络爬虫(学习整理)
- Python爬虫学习笔记(2):多线程入门
- python爬虫的高效学习路径(11/1)