python的rllib库你了解吗

 更新时间:2021年11月02日 08:42:42   作者:不怕晚  
这篇文章主要介绍了python urllib库的使用,帮助大家更好的利用python学习爬虫,感兴趣的朋友可以了解下,希望能够给你带来帮助

urllib库作用

urllib 库 是Python内置的 HTTP 请求库。urllib 模块提供的上层接口,使访问 www 和 ftp 上的数据就像访问本地文件一样。我们爬取网页的时候,经常需要用到这个库。

Urllib 库下的几种模块的基本使用

一、urllib.request模块

1.功能

urllib.request 模块提供了最基本的构造 HTTP (或其他协议如 FTP)请求的方法,利用它可以模拟浏览器的一个请求发起过程。利用不同的协议去获取 URL 信息。它的某些接口能够处理基础认证 ( Basic Authenticaton) 、redirections (HTTP 重定向)、 Cookies (浏览器 Cookies)等情况。而这些接口是由 handlers 和 openers 对象提供的。

2.常用方法

2.1 urlopen()方法

语法格式:

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

参数说明:url:需要打开的网址; data: Post 提交的数据, 默认为 None ,当 data 不为 None 时, urlopen() 提交方式为 Post; timeout:设置网站访问超时时间

用例:

import urllib.request# 等价于from urllib import request
response = urllib.request.urlopen('https://www.baidu.com')
print("查看 response 响应信息类型: ",type(response))
page = response.read()
print(page.decode('utf-8'))

说明: 直接使用 urllib.request 模块中的 urlopen方法获取页面,其中 page 数据类型为 bytes 类型,经过 decode 解码 转换成 string 类型。通过输出结果可以 urlopen 返回对象是HTTPResposne 类型对象。

urlopen 返回一个类文件对象,并提供了如下方法:

read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样;

info():返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息;可以通过Quick Reference to Http Headers查看 Http Header 列表。

getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到;

geturl():返回获取页面的真实 URL。在 urlopen(或 opener 对象)可能带一个重定向时,此方法很有帮助。获取的页面 URL 不一定跟真实请求的 URL 相同。

示例:

import urllib.request
response = urllib.request.urlopen('https://python.org/')
print("查看 response 的返回类型:",type(response))
print("查看反应地址信息: ",response)
print("查看头部信息1(http header):\n",response.info())
print("查看头部信息2(http header):\n",response.getheaders())
print("输出头部属性信息:",response.getheader("Server"))
print("查看响应状态信息1(http status):\n",response.status)
print("查看响应状态信息2(http status):\n",response.getcode())
print("查看响应 url 地址:\n",response.geturl())
page = response.read()
print("输出网页源码:",page.decode('utf-8'))

2.2 Request()方法

使用request()来包装请求,再通过urlopen()获取页面。

语法格式:

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

示例:

import urllib.request
url = "https://www.lagou.com/zhaopin/Python/?labelWords=label"
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36',
'Referer': 'https://www.lagou.com/zhaopin/Python/?labelWords=label',
'Connection': 'keep-alive'
}
req = request.Request(url, headers=headers)
page = request.urlopen(req).read()
page = page.decode('utf-8')
print(page)

参数说明:

User-Agent :这个头部可以携带如下几条信息:浏览器名和版本号、操作系统名和版本号、默认语言。这个数据可以从 网页开发工具上的请求反应信息中获取(浏览器上一般按 F12 打开开发工具)。作用是用于伪装浏览器。

Referer:可以用来防止盗链,有一些网站图片显示来源 https://***.com ,就是检查 Referer 来鉴定的。

Connection:表示连接状态,记录 Session 的状态。

origin_req_host:请求方的 host 名称或者 IP 地址。

unverifiable:指请求无法验证,默认为 False。用户并没有足够的权限来选择接收这个请求结果,例如请求一个 HTML 文档中的图片,但没有自动抓取图像的权限,这时 unverifiable 为 True。

method:指定请求使用的方法,例如 GET、POST、PUT 等。

参考:https://www.jb51.net/article/209542.htm

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • 简单分析python的类变量、实例变量

    简单分析python的类变量、实例变量

    在本篇文章中小编给大家整理的是关于python类变量、实例变量的知识点内容,有需要的朋友们可以学习下。
    2019-08-08
  • opencv+python实现图像矫正

    opencv+python实现图像矫正

    这篇文章主要为大家详细介绍了opencv+python实现图像矫正,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • python3正则模块re的使用方法详解

    python3正则模块re的使用方法详解

    这篇文章主要介绍了python3正则模块re的使用方法详解,需要的朋友可以参考下
    2020-02-02
  • 如何理解Python中包的引入

    如何理解Python中包的引入

    在本篇文章里小编给各位分享的是一篇关于Python中包的引入详解内容,需要的朋友们可以参考学习下。
    2020-05-05
  • Flask之请求钩子的实现

    Flask之请求钩子的实现

    这篇文章主要介绍了Flask之请求钩子的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Python实现提取JSON文件中指定数据并保存至CSV或Excel内

    Python实现提取JSON文件中指定数据并保存至CSV或Excel内

    这篇文章主要介绍了如何基于Python语言实现读取JSON格式的数据,并将提取到的数据保存到.csv格式或.xlsx格式的表格文件中,感兴趣的小伙伴可以了解下
    2023-08-08
  • python 基础学习第二弹 类属性和实例属性

    python 基础学习第二弹 类属性和实例属性

    本人c程序员,最近开始学python,深深的被python的强大所吸引,今后也会把学到的点点滴滴记录下来,现在分享一下关于类属性和实例属性的一些问题,很基础的东西
    2012-08-08
  • 如何使用Python实现一个简易的ORM模型

    如何使用Python实现一个简易的ORM模型

    ORM(Object Relational Mapping)是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。本文将介绍如何使用Python实现一个简易的ORM
    2021-05-05
  • Python JSON编解码方式原理详解

    Python JSON编解码方式原理详解

    这篇文章主要介绍了Python JSON编解码方式原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • python实现校园网自动登录的示例讲解

    python实现校园网自动登录的示例讲解

    下面小编就为大家分享一篇python实现校园网自动登录的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04

最新评论