首页 > 编程知识 正文

python爬虫库安装,libusb库详解

时间:2023-05-06 10:16:34 阅读:24459 作者:3772

一爬虫基本库

Python提供了一个全功能的类库,以帮助完成网络请求。 最基本的HTTP库包括urllib、httplib2、requests和treq。

urllib库只需要关心到请求的链接是什么、要传递的参数是什么以及可选的请求标头设置,而不需要深入了解它是如何传输和通信的。 有了它,你可以用两行代码完成一个请求和响应的处理过程,得到网页的内容。

二urllib介绍

在Python 2中,为了实现请求的发送,有urllib和urllib2两个库。 另一方面,在Python 3中,名为urllib2的库已经不存在,而是统一为urllib,其官方文档链接为https://docs.python.org/3/library/ur lib.html

urllib库: Python内置的HTTP请求库。 也就是说,无需额外安装即可使用。

它包含以下四个模块:

request :这是最基本的HTTP请求模块,可用于模拟请求的发送。 您可以通过向库方法传递URL和其他参数来模拟此过程,就像在浏览器中输入网址并返回一样。 错误:异常处理模块。 如果发生请求错误,可以捕获这些异常,然后重试或执行其他操作,以防止程序意外退出。 parse :一个工具模块,提供许多URL处理方法,如拆分、分析和合并。 robotparser :一个主要用于标识站点的robots.txt文件,用于确定哪些站点可以爬,哪些站点不能爬。 实际上很少使用。三urllib库的urlopen介绍

1urlopen () )

1.1一心一意

urllib.request模块提供了一种创建最基本的HTTP请求的方法,用于模拟浏览器的请求启动过程。 它还处理许可证验证、重定向和浏览器Cookies等内容。

1.2代码

import urllib.request response=urllib.request.urlopen (' https://www.python.org ' ) print(response.read ).decood

2结果类型分析

2.1一心一意

urlopen返回HTTPResposne类型的对象。

这主要包括读取()、读取输入()、获取头()、名称()、获取头()、文件() )等方法,以及msg、版本、状态、读取、删除

得到此对象后,可以将其赋值给response变量,然后调用这些方法和属性以获得返回结果的一组信息。

例如,200指示请求成功,404指示未找到网页,等等,read ) )方法调用返回的网页内容,而调用status属性则返回结果的状态代码

2.2代码

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

e :web spidervenvscriptspython.exee :/web spider/3 _1_1. py

class 'http.client.HTTPResponse '

3HTTPResposne的属性和方法。

3.1代码

import urllib.request response=urllib.request.urlopen (https://www.python.org ) #前两个输出分别输出响应的状态代码和响应的标题信息,并最后一个输出是通过调用getheader输出的print(response.status ) print(response.getheaders ) ) print(response.getheaders ) response.get header (' ser

e :web spidervenvscriptspython.exee :/web spider/3 _1_1. py

200

[ ('服务器'、' nginx、' Content-Type '、' text/html; charset=utf-8 ()、(X-Frame-Options )、() SAMEORIGIN )、(x-xss-protection )、) 1; 模式=block ' () X-Clacks-Overhead ()、GNU Terry Pratchett ()、Via ()、1.1 varnish ()、Content-Length (内容长度) ) )。

es', 'bytes'), ('Date', 'Sun, 06 Jan 2019 07:07:47 GMT'), ('Via', '1.1 varnish'), ('Age', '2563'), ('Connection', 'close'), ('X-Served-By', 'cache-iad2151-IAD, cache-hnd18733-HND'), ('X-Cache', 'HIT, HIT'), ('X-Cache-Hits', '1, 1970'), ('X-Timer', 'S1546758468.685275,VS0,VE0'), ('Vary', 'Cookie'), ('Strict-Transport-Security', 'max-age=63072000; includeSubDomains')]

nginx

4 urlopen函数data参数分析

4.1 函数原型

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

4.2 data参数

data参数是可选的。如果要添加该参数,并且如果它是字节流编码格式的内容,即bytes类型,则需要通过bytes()方法转化。另外,如果传递了这个参数,则它的请求方式就不再是GET方式,而是POST方式。

4.3 代码

import urllib.parseimport urllib.request# 这里我们传递了一个参数word,值是hello。它需要被转码成bytes(字节流)类型。# 其中转字节流采用了bytes()方法,该方法的第一个参数需要是str(字符串)类型,# 需要用urllib.parse模块里的urlencode()方法来将参数字典转化为字符串;# 第二个参数指定编码格式,这里指定为utf8data = bytes(urllib.parse.urlencode({'word': 'hello'}), encoding='utf8')# 这里请求的站点是httpbin.org,它可以提供HTTP请求测试。# 本次我们请求的URL为http://httpbin.org/post,这个链接可以用来测试POST请求,# 它可以输出请求的一些信息,其中包含我们传递的data参数。response = urllib.request.urlopen('http://httpbin.org/post', data=data)print(response.read())

4.4 结果

{ "args": {}, "data": "", "files": {}, "form": { "word": "hello" }, "headers": { "Accept-Encoding": "identity", "Content-Length": "10", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "Python-urllib/3.5" }, "json": null, "origin": "123.124.23.253", "url": "http://httpbin.org/post"}

4.5 说明

我们传递的参数出现在了form字段中,这表明是模拟了表单提交的方式,以POST方式传输数据。

5 urlopen函数timeout参数分析

5.1 点睛

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

5.2 实例

import urllib.request# 这里我们设置超时时间是0.1秒response = urllib.request.urlopen('http://httpbin.org/get', timeout=0.1)print(response.read())

5.3 结果

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/var/py/python/urllibtest.py", line 4, in <module> response = urllib.request.urlopen('http://httpbin.org/get', timeout=1)

...

urllib.error.URLError: <urlopen error timed out>

5.4 结果说明

这里我们设置超时时间是0.1秒。程序0.1秒过后,服务器依然没有响应,于是抛出了URLError异常。该异常属于urllib.error模块,错误原因是超时。

5.5 捕获异常实战

import socketimport urllib.requestimport urllib.error# 这里我们请求了http://httpbin.org/get测试链接,# 设置超时时间是0.1秒,然后捕获了URLError异常,# 接着判断异常是socket.timeout类型(意思就是超时异常),# 从而得出它确实是因为超时而报错,打印输出了TIME OUTtry: response = urllib.request.urlopen('http://httpbin.org/get', timeout=0.1)except urllib.error.URLError as e: if isinstance(e.reason, socket.timeout): print('TIME OUT')

5.6  结果

E:WebSpidervenvScriptspython.exe E:/WebSpider/3_1_1.py

TIME OUT

6 其他参数

除了data参数和timeout参数外,还有context参数,它必须是ssl.SSLContext类型,用来指定SSL设置。

此外,cafile和capath这两个参数分别指定CA证书和它的路径,这个在请求HTTPS链接时会有用。

cadefault参数现在已经弃用了,其默认值为False。

urlopen()可以完成简单的请求和网页抓取。

若需更加详细的信息,可以参见官方文档:https://docs.python.org/3/library/urllib.request.html。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。