python urllib库介绍

一、urlopen()

urlopen()函数的API:

urllib.request.urlopen(url, data = None, [timeout,]*, cafile = None, capath = None, cadefault = False, context = None)

参数介绍:

data参数是可选的。如果要添加该参数,需要使用bytes()方法将参数转化为字节流编码格式的内容,即bytes类型。如果传递了这个参数,那么它的请求方式就不再是get方式,而是post方式

timeout参数设置超时时间,单位是秒,如果请求超出了设置的这个时间,还没有得到响应,就会抛出异常。如果不指定该参数,就会使用全局默认时间。支持HTTP\HTTPS\FTP请求。

try except结合,实现一个网页长时间未响应,就跳过对它的抓取。

1、urllib.request模块

提供了最基本的构造HTTP请求的方法,利用它可以模拟浏览器的一个请求发起过程

如下代码完成了对python官网的抓取,输出了网页的源代码。

import urllib.request

response = urllib.request.urlopen("https://www.python.org")
print(response.read().decode('utf-8'))

输出结果:

 2、用type()查看返回的结果

import urllib.request

response = urllib.request.urlopen("https://www.python.org")
print(type(response))

 返回的结果是一个HTTPResponse类型的对象,主要包含read()、readinto()、getheader(name)、getheaders()、fileno()等方法,以及msg、version、status、reason、debuglevel、closed等属性

3、status属性、getheaders()方法、getheader(name)方法

import urllib.request

response = urllib.request.urlopen("https://www.python.org")
print(response.status)
print(response.getheaders())
print("&&&&&&”)
print(response.getheader('Server'))

输出结果

 二、Request类

class urllib.request.Request(url, data = None, headers = {}, origin_req_host = None, unverifiable = False, method = None)

参数url是必传参数,其他都是可选参数。

1、Handler

urllib.request模块里的BaseHandler类是所有其他Handler的父类。以下是继承了BaseHandler类的子类。

  • HTTPDefaultErrorHandler:用于处理HTTP响应错误,错误都会抛出HTTPError类型的异常。
  • HTTPRedirectHandler:用于处理重定向。
  • HTTPCookieProcessor:用于处理Cookies
  • ProxyHandler:用于设置代理,默认代理为空。
  • HTTPPasswordMgr:用于管理密码。它维护了用户名和密码的表。
  • HTTPBasicAuthHandler:用于管理认证,如果一个链接打开时需要认证,那么可以用它来解决认证问题。

2、OpenerDirector

简称Opener。它可以使用open()方法,返回的类型和urlopen()一样。

它和Handler的关系是:利用Handler来构建Opener 

三、链接解析

标准的链接格式

scheme://netloc/path;params?query#fragment

 scheme:协议;netloc是域名;path是访问路径;params是参数;query是查询条件;fragment是锚点,用于直接定位页面内部的下拉位置。

 

 四、Robot协议

也被称为爬虫协议、机器人协议。全名叫网络爬虫排除标准(Robots Exclusion Protocol),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取。

通常是一个robots.txt文件,放在网站的根目录下。

样例

User-agent:*

Disallow:/

Allow:/public/

当搜索爬虫访问一个站点时,它首先会检查这个站点根目录下是否存在robots.txt文件,如果存在,搜索爬虫会根据其中定义的爬取范围来爬取,如果不存在,搜索爬虫便会访问所有可直接访问的页面。

禁止所有爬虫访问任何目录的代码

User-agent:*

Disallow:/

允许所有爬虫访问任何目录的代码

User-agent:*

Disallow:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值