Python数据挖掘学习笔记(6)Urllib库基础

      要系统学习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))

感谢韦玮老师的指导

猜你喜欢

转载自blog.csdn.net/Smart3S/article/details/82431175
今日推荐