Python爬虫——如何使用urllib的HTTP基本库

怎样通过 urllib库 发送 HTTP 请求?

 

urllib库主要由四个模块组成:

1. 使用urllib.parse解析URL
  • 使用urlparse()分段URL

  • 在这里,我们用urlparse()函数构建了一个实例对象(ParseResult类型),并将其赋值给result,以便调用。

    事实上,ParseResult类型对象包含6个部分:

    • scheme,代表协议,通常在"://"前面,这里即http
    • netloc,代表域名,通常在第一个"/"前面,这里即docs.python.org:80
    • path,代表访问路径,通常在域名之后,这里即/3/library/urllib.parse.html
    • params,代表参数,通常在"?"之前,这里不存在
    • query,代表查询条件,通常在"?"之后,这里也不存在
    • fragment,代表瞄点,通常在"#"之后,用于直接定位页面内部的下拉位置,这里即url-parsing
  • 使用urlunparse()构造URL

  • 事实上,在urllib.parse中,解析URL的方法不仅有urlparse()函数,还有urlsplit()等;构造URL的方法不仅有urlunparse()函数,还有urlunspliturlencode()等。

2. 使用urllib.request打开 URL,模拟发送请求
  • 使用urllib.request.urlopen函数发送HTTP请求,构造对象

 

  • urllib.request.urlopen 函数构造一个接受请求的实例对象(HTTPResponse类型),并将其赋值给response变量,以便之后使用。

    read()方法可以得到返回的网页内容。事实上,HTTPResponse类型的对象,不仅可以调用read()getheaders()方法,还可以调用statusmsg属性来查看请求发送后返回的一系列信息。

  • 通过Request类灵活配置参数,构建请求信息对象

  • 这里我们依然使用urlopen()方法来发送HTTP请求,但是传递的不再是单纯的URL,而是一个Request类型的对象。通过集合各种参数,将其独立成一个对象,可以更加丰富和灵活地配置参数。

    这里的headers即为请求头,method即为请求方法

  • 使用Handler处理器进行高级操作(以Cookies处理为例)

  • HTTPCookieProcessorurllib.request模块里用于处理Cookie的一个类。值得注意的是这里打开链接的不再是request.urlopen()函数,而是用Opener对象的open()方法来发出请求。

3. 使用urllib.error捕捉请求错误,进行异常处理
  • 使用URLError类捕捉URL异常

     
      
    • 在这里如果发生网页不存在等请求异常,我们就可以通过URLError捕捉异常,从而避免程序的异常终止

    • 使用HTTPError类捕捉HTTP请求错误

       
  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值