《Python3 网络爬虫开发实战》学习笔记(四)--urllib库

  1. urllib:指定请求的URL、请求头、请求体等信息便可实现HTTP请求的发送,同时还可以把服务器返回的响应转化为Python对象进而可以获取响应状态码、响应头等信息。
  2. urllib包含request(模拟发送请求)、error(捕获异常以防止终止)、parse(提供URL处理方法)和robotparser(识别网站的robots.txt文件)四个模块。
  3. urllib.request的urlopen方法实现对目标的访问,如下图:                                                        
  4. Page的数据格式为bytes,需要通过decode()或者str()两种方法转换成str类型。
  5. urlopen格式:url为url地址,data为发送到服务器的其他数据对象,timeout为设置超时时间,cafile为CA证书,capath为证书路径,cadefault已弃用,context用来指定SSL设置。urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault= False,context=None)
  6. 添加data需要使用bytes方法将data转化为bytes型,请求方式也由GET转化为POST方式。
  7. urllib.request的Request方法可以加入Headers等信息进行请求,如下图:                              

  8. Request格式:url为地址(必传),data需传bytes类型数据或者是要是字典的话可以先用parse模块里的urlencode()编码,headers(请求头)可以直接构造或者通过add_header()添加。origin_req_host为请求方的host名称或者IP地址,unverifiable表示请求是否是无法验证的,method指示请求使用的方法GET、POST、PUT等。urllib.request.Request(url,data=None,headers={},origin_req_host=None,unverifiable= False,method=None) 
  9. urllib.request的BaseHandler类是所有其他Handler的父类,提供了default_open、protocol_request等方法。
  10. HTTPDefaultErrorHandler:处理HTTP响应错误;HTTPRedirectHandler:处理重定向; HTTPCookieProcessor:处理Cookies;HTTPPasswordMgr:管理密码;  HTTPBasicAuthHandler:管理认证;ProxyHandler:设置代理,默认为空。
  11. build_opener:实现更高等级的请求。如下图:
  12. 报错certificate verify failed:certificate has expired时添加“                                               import ssl                                   ssl._create_default_https_context=ssl._create_unverified_context     ”即可。
  13. 爬虫代理可以隐藏真实的IP从而避免由于经常使用相同的IP引起的网站封锁。如下图:(实验过程中出现了“目标计算机积极拒绝”的问题,具体解决方法见我的文章
  14. proxy_handler,创建代理服务器,参数是一个字典,键名是协议类型(http/https),键值是代理链接。
  15. Cookie的处理需要handler,获取网站的cookie:                                                                     
  16. 声明一个cookie,利用HTTPCookieProcessor来构建一个handler,然后用build_opener构建Opener,执行open函数。
  17. 将CookieJar更换为MozillaCookieJar可以读取并保存Cookie为Mozilla的格式。
  18. LWPCookieJar可以读取并保存Cookie为LWP的格式。
  19. cookie.load可以读取本地的Cookie文件,获取Cookie的内容。
  20. 异常处理:urllib的error模块定义了由request模块产生的异常。URLError是error异常模块的基类,属性reason:返回错误的原因:                                                                                    
  21. HTTPError是URLError的子类,处理HTTP请求错误,先捕获HTTPError异常,再捕获URLError异常。属性code:返回HTTP状态码,例如404网页不存在,500服务器内部错误;reason:同父类一样,返回错误的原因;headers:返回请求头。
  22. 解析链接:urllib库提供了parse模块,定义了处理URL的标准接口。
  23. urlparse:实现URL的识别和分段。参数urlstring:待解析的URL;scheme:默认的协议;allow_fragments:是否忽略fragment。 urlunparse:构造URL。接收的对象长度必须为6。
  24. urlsplit:将params合并到path中再解析params;urlunsplit:合并链接。
  25. urljoin:分析base_url的scheme、netloc、path,并补充链接的缺失部分。
  26. urlencode:将params序列化为GET请求的参数。
  27. parse_qs:将GET请求参数转化为字典。parse_qsl:将参数转化为由元组组成的列表。
  28. quote:将内容转化为URL编码的格式。unquote:进行URL解码。
  29. 例如scheme://netloc/path;params?query#fragment  : scheme代表协议;netloc:域名;path,访问路径;params,参数;query,查询条件,一般用作get类型的URL;#后面是锚点,用于直接定位页面内部的下拉位置。
  30. 利用urllib的robotparser模块可以实现网站的Robots协议的分析。
  31. robotFileParser:根据网站的robots.txt文件来判断一个爬虫是否有权限来爬取此网页。set_url:设置robots.txt文件的链接;read:读取并分析robots.txt文件;parse:解析robots.txt文件,传入的参数是robots.txt某些行的内容,会按照robots.txt的语法规则来分析这些内容;can_fetch:该方法用User-Agent和要抓取的URL两个参数,返回该搜索引擎是否可以抓取此URL;mtime:返回上次抓取和分析robots.txt的时间;modified:将当前时间设置为上次抓取和分析的时间。                                                                                                                         (欢迎大神指导)

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悦小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值