urllib.request.urlretrieve ()用于下载指定url内容到本地

参考博客链接(1)https://blog.csdn.net/qq_21856335/article/details/80947690
(2)https://blog.csdn.net/pursuit_zhangyu/article/details/80556275
爬虫用到的函数
urllib.request.urlretrieve(link,filesavepath)

参数说明:
url:外部或者本地url
filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据);
reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函数来显示当前的下载进度。
data:指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头。

其实 还有第三个和第四个函数
urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)

第三个参数,如果存在,则是一个回调函数,它将在建立网络连接时调用一次,并且在此后每个块读取后调用一次。这个回调函数将传递三个参数;到目前为止传输的块计数,以字节为单位的块大小,以及文件的总大小。第三个参数可能是-1,在旧的FTP服务器上,它不返回文件大小以响应检索请求。

reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函数来显示当前的下载进度。

data:指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头。

在我的爬虫代码中是

for image in imageEntityArray:
                #img里面有src,超链接,也就是图片的url
                link = image.get('src')
                #文件要保存的路径,这里是保存在桌面    这里的命名就是从上面获得的id
                filesavepath = '/Users/slq/Desktop/scenery/%s.jpg' % nameTitle
                #下面这个函数用来设置HTTP或Socket访问超时,来防止爬虫抓取某个页面时间过长
                #输入参数单位貌似是分钟
                socket.setdefaulttimeout(30) 
                #下面函数的第一个参数是外部URL,第二个参数是文件的保存路径
                urllib.request.urlretrieve(link,filesavepath)
                print ("filesavepath")

你可能感兴趣的:(随笔)