要系统学习urllib模块,需要先Urllib基础开始,本文将介绍Urllib库的五个基础方法:urlretrieve()、urlcleanup()、info()、getcode()、geturl(),并给出相关的实例。
一、urlretrieve()方法:能够将网页直接获取到本地
>>> #retrieve将网页直接爬到本地
>>> import urllib.request
>>> urllib.request.urlretrieve("http://www.hellobi.com",filename="F:/webget.html")
('F:/webget.html', <http.client.HTTPMessage object at 0x000001D55AB4D908>)
结果:在对应目录可查看获取的网页。
二、urlcleanup()方法:清除urlretrieve()方法产生的缓存
>>> #urlcleanup()将urlretrieve产生的缓存清除掉
>>> urllib.request.urlcleanup()
三、info()方法:将基本环境信息展示出来
>>> #将基本环境信息展示出来
>>> file=urllib.request.urlopen("http://www.hellobi.com")
>>> file.info()
<http.client.HTTPMessage object at 0x000001D55AC3B198>
四、getcode()方法:获取当前爬取网页的状态码(200对应网页获取正常,403对应爬取有问题禁止访问)
>>> file.getcode()
200
五、geturl()方法:获取当前爬取网页的URL
>>> file.geturl()
'https://www.hellobi.com/
接下来是使用Urllib库爬取时的超时设置,由于网络速度或对方服务器的问题,我们爬取一个网页的时候,都需要一段时间才能获得相应。我们访问一个网页,如果该网页长时间未响应,那么我们的系统就会判断该网页超时了,即无法打开该网页。有的时候,我们需要根据自己的需要,来设置超时的时间值,比如,有些网站反应快,我们希望2秒钟没有反应,则判断为超时,那么此时,timeout的值就是2,再比如,有些网站服务器反应慢,那么此时,我们希望100秒没有反应,才判断为超时,那么此时timeout的值就是100。接下来是超时设置的代码实例。
六、超时设置
>>> #超时设置
>>> file=urllib.request.urlopen("http://www.hellobi.com",timeout=1)
>>> #没有出现问题,因为设置为1秒,时间够用
>>> file=urllib.request.urlopen("http://www.hellobi.com",timeout=0.1)
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
file=urllib.request.urlopen("http://www.hellobi.com",timeout=0.1)
File "C:\Users\XXXX\AppData\Local\Programs\Python\Python35\lib\urllib\request.py", line 163, in urlopen
return opener.open(url, data, timeout)
File "C:\Users\XXXX\AppData\Local\Programs\Python\Python35\lib\urllib\request.py", line 472, in open
response = meth(req, response).............
>>> 出现了问题,因为设置为0.1秒时间不够用,因此提示超时
七、通过异常处理使超时设置程序超时时程序不会崩溃:
扫描二维码关注公众号,回复:
3081013 查看本文章
>>> for i in range(0,100):
try:
file=urllib.request.urlopen("http://yum.iqianyue.com",timeout=1)
data=file.read()
print(len(data))
except Exception as e:
print("出现异常:"+str(e))