先说说吧,我是一个Python爱好者,准备花半个学期在opencv上。以前玩过,所以这次要认真做。废话少说,尽量讲得有趣些,尽量标出出处和参考作为前奏。我需要一些资料,老师刚给了我一个链接。。。不过,某网盘的链接是一张照片我在版本开始的时候没在意。多次进入链接,发现页面始终不存在。后来,我想起了我和同学的一次尴尬。这是数字1,小写的L和大写的i被愚蠢地混淆了,好吗?I、l、1总共只出现了4次。编写一个爬虫来发出导入请求rheaders={"User-Agent":"Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.1.6)","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Connection":"keep-alive","Accept-Charset":"GB2312,utf-8;q=0.7,*;q=0.7"}link='xxxxxxx'#这是一个错误的URLresponse=r.get(link,headers=headers)response.encoding='utf-8'#更改代码print(respon.text[:500])索性试了下spyder中的代码,我发现:这个小黄鸡返回的页面中有一个字符串:页面不存在,太开心了,正常的链接页面一般没有这个8,于是随便找了一个某度网盘的正常下载链接试了一下(大家可以自己试试)于是,思路就是把I,l,1放在某度网盘的链接不断换位置,然后一直要求返回文本。如果字符串'pagedoesnotexist'不存在,那么连接代码如下:#!/usr/bin/envpython3#-*-coding:utf-8-*-"""CreatedonMonSep1616:01:412019@author:Ryan"""导入请求uestsasrimportnumpyasnpheaders={"User-Agent":"Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.1.6)","Connection":"keep-alive",}raw_link='https://pan.baidu.com/s/1GvlYt6aFtXXXXXXDX1OQ'iL1=['I','l','1']defget_iL1_index(link,iL1_list):#获取1iL在连接中的位置#iL1list#iL1=['I','L','1']justfordecoupling))#Converttonp.arrayforxiniL1:#找到iL1的位置,加入到index_listindex_list.append(np.where(raw_link_array==x)[0])#Convertindex_array=np.concatenate(index_list,axis=0)returnindex_arraydefdecimal_return(num_len,candidates):'''候选生成函数num_len:位数candidates:候选列表,元素类别为strreturnallstrlist'''counter_array=np.zeros(shape=(num_len),dtype=np.int64)#注意必须是int类型candidates_copy=candidates.copy()#克隆候选列表str_need=''candidates_len=len(candidates)str_need_list=[]while(1):forindexinrange(num_len):str_need+=candidates_copy[counter_array[index]]counter_array[0]+=1ifcounter_array[0]==candidates_len:forxinrange(num_len):ifcounter_array[x]==candidates_len:counter_array[x+1]+=1counter_array[counter_array==candidates_len]=0#整体清除counter_array[0]=0str_need_list.append(str_need)str_need=''ifnp.sum(counter_array)==num_len*(len(candidates)-1):#这里手动添加的,一个不同点(这里可能是)str_need_list.append(num_len*candidates[-1])breakreturnstr_need_listraw_link_list=np.array(list(raw_link))#将链接字符串转换成listiL1_index=get_iL1_index(raw_link,iL1)#找到链接中iL1中的位置replace_list=decimal_return(len(iL1_index),iL1)forindex,replace_strinenumerate(replace_list):raw_link_list[iL1_index]=list(replace_str)link=''.join(raw_link_list)link_respo=r.get(link,headers=headers)link_respo.encoding='utf-8'if'pagedoesnotexist'inlink_respo.text:print(index,link,'文件不存在\n')elif'你迟到了'inlink_respo.text:print(index,link,'文件被取消\n')else:print(index,link,'success\n')好了,现在找到下载链接了,下载完成了。。。环境搭建说到环境搭建,大家都知道anaconda的全家桶,miniconda是今天经常有新鲜事,所以你想说什么?conda的区别,我参考这篇博客conda是一个通用的包管理系统,旨在构建和管理任何语言和任何类型的软件例如:包管理类似于pip的使用,环境管理允许用户facilitate轻松安装不同版本的python,快速切换。Anaconda是一个打包集合,里面预装了conda、某个版本的python、很多package、科学计算工具等等,也就是给你安装了很多不常用的常用库。Miniconda,顾名思义,只包含了最基础的内容——python和conda,以及相关的必要依赖。对于空间要求严格的用户,Miniconda是一种选择。它只包含最基本的东西,其他的库??还得自己安装。这里有更深入讨论的三个Miniconda官方下载链接:https://docs.conda.io/en/late...清华大学官方开源镜像站下载链接:https://mirrors.tuna.tsinghua..傻瓜式的默认操作,安装后.....接下来安装包:安装所有的numpy、scipy、matplotlib。建议用conda安装。重点不在环境上。简单的操作这里就不说了安装openCV的一个坑:安装openCVcontrib顺便放几个说明:condaupdate--all#updateminicondacondalist#列出所有安装的应用包condainstall
