Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地~~~附源代码...
题记:
11月14日早晨8点,人人网发布公告,宣布人人公司将人人网社交平台业务相关资产以2000万美元的现金加4000万美元的股票对价出售予北京多牛传媒,自此,人人公司将专注于境内的二手车业务和在美国的投资业务。
人人网CEO陈一舟说:“很高兴为人人网找到一个新的归宿和起点。”
然而对于人人网曾经近2亿的注册用户来说,哪有什么新的开始,故事已经到了尽头。
彼时,他们还是刚刚逃离高考噩梦的青涩大学生,抓住人人网这个宣泄口乐此不疲地表达着自我;现在,他们苦思冥想记忆中的账号密码,费力登上网站,发布最后一条状态:再见,人人。
还有更多的人登陆了人人网的手机客户端,结果发现连发布状态的按钮都找不到,一个明晃晃的“我要开播”,和首页上让人眼花缭乱的美女短视频,显示出在移动互联网时代,人人网早已从一个社交App,转型为短视频和直播应用。
他们只能压抑住心中的不舍,卸载了这个承载青春记忆的网站,转而去微博上说出那句告别的话语,和千千万的人一起来缅怀过往,“人人网被卖了”迅速站上热搜榜第一。
曾经活跃在人人上的那些青年们,如今都走入社会结婚生子,他们中的许多人,正是在人人上认识了自己的人生伴侣;而新的大学年轻人被琳琅满目的App牵着走,睁眼微信,早饭抖音,上课豆瓣,下课B站,午饭微博,晚饭头条,一个个分散在各自的小圈子里,十年前全国的青年汇聚在校内网上谈论星辰大海的场景,终究会消逝在一代人的记忆当中。
此次案例:
Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地
逆向思维来
以自己的人人网主页为例http://www.renren.com/23231****/profile,其中23231****是人人网给每个人分配的id号(用****隐去了后面四位)
因为需要使用账户名和密码,本程序使用了cookie登陆(每天需要更换cookie)
第一步:下载某个相册内的所有照片到本地
打开自己的某个相册,我的以http://photo.renren.com/photo/23231****/album-252396640/v7,为例。多开几个相册观察相册的连接可以发现,album-后面的字符串代表了相册的id
人人网存储了两种大小的照片,一种是缩略图,一种是点开某个照片显示的原图(当然不可能跟你拍的原图是一样大小的,为节省空间,上传的过程中系统会进行同比例的压缩处理),我们这个脚本下载较大尺寸的照片
按F12打开开发者工具,找到某个照片的连接,分别copy到浏览器看一下哪个是大尺寸的照片连接,可以看到标红的即为我们需要的
那么接下来就是使用python赶紧着把这些url获取到吧
but!
xpath爬出来是空,why?查询源代码后发现上一段代码是写在<script>标签内的
那么就用正则匹配试了下是ok哒
but!
抓取出来的url数量比相册内的照片数量少啊,看了几个相册发现,源代码中的url最多有40个,如果你的相册中照片数量大于40就会不全,心塞!
爬虫写的多了,到这里就知道应该去哪里找了,当然是动态加载文件啊
开发者工具切换到network页签选择XHR,然后刷新一下网页并滑动到相册最下面,可以看到左下侧出现了很多,点击红色框线内的随意一个文件,在右侧选中Headers看RequestURL
把这段字符串粘贴到浏览器中,发现显示是json数据
经测试可知,去掉&requestToken=-1989347373&_rtk=552df62d也可,并且前面的pageSize可以更改大小(最大是100)
遍历输出的时候需要注意:相册内数量、pageSize和page三者是有关联的
那么问题来了,我还需要获取到相册数量这个参数!
1 def download_photo(each_album_link,album_photoNumber,album_name,album_id,person): 2 """ 3 按照相册下载内部所有照片到同名文件夹 4 :param each_album_link:<str> 各个相册链接 5 :param album_photoNumber: <int> 每个相册内的照片数量 6 :param album_name: <str>相册名称,用来创建同名的文件夹 7 :param album_id:<str>相册id,用来创建同名文件夹 8 :param person: <str>所属人名字,用来创建一级文件夹名称 9 :return: none 10 """ 11 n = 0 12 while n < album_photoNumber: 13 #例如个人某个相册链接为http://photo.renren.com/photo/23231****/album-284966900/v7 14 #需要构建出来以下形式的相册网页(json格式) 15 # 'http://photo.renren.com/photo/23231****/album-284966900/bypage/ajax/v7?page=1&pageSize=100' ,经测试最多pageSize=100 16 link_para = 'bypage/ajax/v7?page={}&pageSize=100'.format(int((n/100)+1)) 17 js_link = each_album_link.replace('v7',link_para)#构建相册网页(json格式) 18 print(js_link) 19 20 file_path = make_file(person,album_name,album_id)#调用函数make_file 21 #print(file_path) 22 23 html_data = requests.get(js_link, headers=headers) 24 try: 25 json_data = html_data.json()['photoList'] 26 for i in range(0,len(json_data)): 27 link = json_data[i]['url']#获取相册中每张照片的下载链接 28 #print(link) 29 if file_path is None: 30 return 31 else: 32 if os.path.exists(file_path +'/'+str(i+n+1)+'.jpg'): 33 pass 34 else: 35 with open(file_path +'/'+str(i+n+1)+'.jpg','wb') as f: 36 f.write(requests.get(link, headers=headers).content) 37 except: 38 print('访问受限,需要密码!') 39 40 n = n + 100#根据Pagesize设置步长
第一步小结:
通过相册的id或者连接+相册内的照片数量共同构建json格式的相册链接,通过这个链接可以获取到照片的下载地址,通过write写入本地
注意一点,有的相册是需要访问密码的,虽说能获取相册的一些信息,但是没有json数据的
那么怎么获取各个相册的id或者连接和照片数量呢?请看第二步
第二步:获取每个相册的id、内含照片数量、相册名称等信息
在个人的“相册”下就能够获取这些信息,例如我的相册http://photo.renren.com/photo/23231***/albumlist/v7?offset=0&limit=40#或者http://photo.renren.com/photo/23231****/albumlist/v7均可访问
注意一下,页面右下角有个按钮“查看全部”
,一定要点击一下看看是否页面发生了变化。反正我的是变了,一些相册也展现了出来。这时在看下网页链接是否发生了变化
结果,多了“showAll=1#”
因此,这一步骤的个人相册网页可以直接变为:http://photo.renren.com/photo/24422****/albumlist/v7?showAll=1
跟步骤一一样,相册的一些信息也是写在<stript>标签内的,看网址中有个limit=40猜想应该也是限制了源代码中只有40个相册的信息
因为我的相册不够40个,因此无法获取动态加载的文件,索性就直接正则匹配吧
如果你的相册数量大于40,可以安装步骤一的思路来获取
1 def get_album_data(album_link): 2 """ 3 在个人相册链接的网页源代码中,正则匹配相册数量和所有相册的名称、id、相册内包含的照片数 4 :param album_link: <str> 个人相册链接,点开显示全部可看完整的相册展示,因此连接中需要写明showAll=1 5 例如http://photo.renren.com/photo/24422****/albumlist/v7?showAll=1 6 :return: <list> 相册名称、id、内含照片数以及相册数量和所属人名字 7 """ 8 html_data = requests.get(album_link, headers=headers) 9 album_name = re.findall('"albumName":"(.*?)"', html_data.text,re.S) 10 print('直接正则匹配出来的相册名称,不一定显示中文:',album_name) 11 album_id = re.findall('"albumId":"(.*?)"', html_data.text,re.S) 12 album_photoNumber = re.findall('"photoCount":(.*?),', html_data.text,re.S) 13 album_number = re.findall("albumCount': (.*?),",html_data.text,re.S) 14 person = re.findall('<title>人人网 - (.*?)的相册</title>',html_data.text,re.S)#人人网所属人 15 #print('各相册信息:',album_name,album_id,album_photoNumber,album_number,person) 16 return album_name,album_id,album_photoNumber,album_number,person
这里有个坑就是获取到album_name的字段,打印出来看有时候显示中文,有时候显示'\\u660e\\u660e\\u7684\\u5feb\\u4e50\\u751f\\u6d3b'这种鬼样子……
还有的时候本来相册的名字是“我的大学——朋友”,中间有个——,那么若是全部显示成Unicode形式倒也没问题,直接整体做个转换就行
but有时候直接显示出来我的大学\u2014\u2014朋友,这个坑我暂时还没想到怎么处理……
第二步小结:通过个人相册的连接打开,用正则匹配出每个相册的名称、id、内含照片数量、相册数量(包含照片数量为0的相册)和所属人
这一步只获取了各个相册的id,并没有直接返回相册的连接(这一步操作在主函数中进行)
那么怎么获取个人相册的连接呢?请看第三步
第三步:通过个人主页获取个人相册链接
这一步就很简单了,啥方法都行,别忘了后面加上'?showAll=1'才能显示全部相册
def get_album_link(user_link):"""通过个人主页正则匹配"个人相册"按钮链接:param user_link: 个人主页网址,例如http://www.renren.com/24422****/profile:return: <str>个人相册链接,例如http://photo.renren.com/photo/24422****/albumlist/v7?showAll=1"""html_data = requests.get(user_link, headers=headers)#print(html_data.text)album_link = re.findall('"(.*?)">相册', html_data.text)[0]+'?showAll=1'#获取个人相册的连接print('个人相册链接:',album_link)return album_link
第三步没啥可总结的,个人主页就手动找手动输入吧
第四步:创建文件夹
思路是手动提前建立《人人网相册》,然后在此文件夹下按照所属人姓名建立一级文件夹,在一级文件夹下按照文件夹名称同名建立文件夹保存照片
既然要建立文件夹并命名,就少不了命名方面的规范,我这里没有做严格的筛选,若无法新建则直接pass
因为读取的是第二步返回的相册名称,因此有同样的相册显示问题,我这里认为显示的是unicode形式,然后做了.encode("utf-8").decode("unicode_escape"),这样可以保证显示出来的是中文;
若读取出来的直接是中文,经过.encode("utf-8").decode("unicode_escape")后显示的是乱码(也能创建文件夹成功),此时重新运行直到显示的是unicode即可
这一步没有找到很好的解决方案
1 def make_file(person,album_name,album_id): 2 """ 3 创建一级文件夹(以个人名字为文件名称)和二级文件夹(以相册名称命名),若存在则不重复建立 4 若存在或者创建成功key=1并返回路径,否则key=0 5 对文件命名规范不做限制,若失败直接pass 6 注意事项:读出的相册名称有时候显示中文,有时候显示成unicode形式,有时候两者均有;album_id是为了区别人人网上有重名的文件夹 7 :param person: <str> 个人名字,用来生成个人名下的一级文件夹 8 :param album_name: <str> 相册名字,用来生成同名文件夹 9 :param album_id:<str>相册id,用来创建同名文件夹 10 :return:<str> 相册所在路径 11 """ 12 13 file_path='' 14 album_name = album_name.encode("utf-8").decode("unicode_escape") 15 #按个人名字生成一级文件夹,成功创建或者已存在则key=1,否则key=0 16 if os.path.exists((os.getcwd() + '\人人网相册'+'/' + person)): 17 key = 1 18 else: 19 try: 20 os.mkdir(os.getcwd() + '\人人网相册'+'/' + person) 21 key = 1 22 except: 23 key = 0 24 print(key,'文件夹《' + person + '》创建失败,请查看命名方式!') 25 26 #在一级文件夹下(以key=1进行判断)生成各个相册的文件夹 27 if key == 1: 28 file_path = os.getcwd() + '/人人网相册' + '/' + person + '/' + album_name+'_'+ album_id#加id是为了解决文件夹重名问题 29 if os.path.exists(file_path): 30 pass 31 else: 32 try: 33 os.mkdir(file_path) 34 except: 35 print(key, '文件夹《' + album_name +'_'+ album_id+'》创建失败,请查看命名方式!') 36 key = 0 37 if key == 1: 38 #print(file_path) 39 return file_path 40 else: 41 #print('文件夹创立失败,请排查错误!') 42 return None
第四步小结:
如果简单点来做的话,可以用个人id和相册的id作为文件夹名称,因为都是数字肯定不会出错,但是就是对于读者不太友好
所有功能的函数都已调试好之后,需要主函数调用各个模块啦,为了方便理解,先画个图吧(画的不专业,意思意思)
1 if __name__=='__main__': 2 Host_url= 'http://www.renren.com/23231****/profile'#个人主页 3 Host_id = Host_url.split('/')[-2] 4 data = get_album_data(get_album_link(Host_url)) 5 person = data[4][0] 6 #print(person) 7 album_number = int(data[3][0])#相册数量 8 for i in range(0,album_number): 9 each_album_link = 'http://photo.renren.com/photo/'+Host_id+'/album-' + data[1][i] + '/v7' # 构造各个相册链接,data[1][i]是相册id 10 #each_album_link = 'http://photo.renren.com/photo/24422****/album-' + data[1][i] + '/v7' #构造各个相册链接,data[1][i]是相册id 11 print(each_album_link) 12 album_name = data[0][i] #相册名称 13 album_photoNumber = int(data[2][i]) 14 download_photo(each_album_link, album_photoNumber, album_name,data[1][i],person)
输出结果:
总结:
1. 如果登陆自己的账户,不仅可以爬下自己的照片,还可以爬其他人的
因为人人网是相对来说公开的,只有你能浏览到的就可以爬,如果有些人设置了好友可见(那么你如果作为非好友是看不到也爬不下来的)
2. 其实可以用打包软件生成可执行文件,这样小伙伴们就可以用自己的账号或者cookie下载自己的啦
3. 免登陆的方式有很多种,我这里使用的是cookie方式,每天都需要更改cookie,不太友好,以后会专门写一篇关于这种账号登陆的网站怎么爬取的文章吧
4. 其实每张照片都有评论的,评论也是可以有方法爬取的呦
5. 运行的时候,观察一下打印出来的相册名称,若是中文请重新运行直到是显示成\\u****的unicode形式
源代码:
1 ''' 2 Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地 3 免登陆的方式有很多种,我这里使用的是cookie方式,每天都需要更改cookie 4 如果登陆自己的账户,不仅可以爬下自己的照片,还可以爬其他人的 5 因为人人网是相对来说公开的,只有你能浏览到的就可以爬,如果有些人设置了好友可见(那么你如果作为非好友是看不到也爬不下来的) 6 ''' 7 8 9 import requests,re,os 10 11 headers = { 12 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36', 13 'cookie':你的cookie,自行填写 14 } 15 16 def download_photo(each_album_link,album_photoNumber,album_name,album_id,person): 17 """ 18 按照相册下载内部所有照片到同名文件夹 19 :param each_album_link:<str> 各个相册链接 20 :param album_photoNumber: <int> 每个相册内的照片数量 21 :param album_name: <str>相册名称,用来创建同名的文件夹 22 :param album_id:<str>相册id,用来创建同名文件夹 23 :param person: <str>所属人名字,用来创建一级文件夹名称 24 :return: none 25 """ 26 n = 0 27 while n < album_photoNumber: 28 #例如个人某个相册链接为http://photo.renren.com/photo/23231****/album-284966900/v7 29 #需要构建出来以下形式的相册网页(json格式) 30 # 'http://photo.renren.com/photo/23231****/album-284966900/bypage/ajax/v7?page=1&pageSize=100' ,经测试最多pageSize=100 31 link_para = 'bypage/ajax/v7?page={}&pageSize=100'.format(int((n/100)+1)) 32 js_link = each_album_link.replace('v7',link_para)#构建相册网页(json格式) 33 print(js_link) 34 35 file_path = make_file(person,album_name,album_id)#调用函数make_file 36 #print(file_path) 37 38 html_data = requests.get(js_link, headers=headers) 39 try: 40 json_data = html_data.json()['photoList'] 41 for i in range(0,len(json_data)): 42 link = json_data[i]['url']#获取相册中每张照片的下载链接 43 #print(link) 44 if file_path is None: 45 return 46 else: 47 if os.path.exists(file_path +'/'+str(i+n+1)+'.jpg'): 48 pass 49 else: 50 with open(file_path +'/'+str(i+n+1)+'.jpg','wb') as f: 51 f.write(requests.get(link, headers=headers).content) 52 except: 53 print('访问受限,需要密码!') 54 55 n = n + 100#根据Pagesize设置步长 56 57 def get_album_data(album_link): 58 """ 59 在个人相册链接的网页源代码中,正则匹配相册数量和所有相册的名称、id、相册内包含的照片数 60 :param album_link: <str> 个人相册链接,点开显示全部可看完整的相册展示,因此连接中需要写明showAll=1 61 例如http://photo.renren.com/photo/24422****/albumlist/v7?showAll=1 62 :return: <list> 相册名称、id、内含照片数以及相册数量 63 """ 64 html_data = requests.get(album_link, headers=headers) 65 album_name = re.findall('"albumName":"(.*?)"', html_data.text,re.S) 66 print('直接正则匹配出来的相册名称,不一定显示中文:',album_name) 67 album_id = re.findall('"albumId":"(.*?)"', html_data.text,re.S) 68 album_photoNumber = re.findall('"photoCount":(.*?),', html_data.text,re.S) 69 album_number = re.findall("albumCount': (.*?),",html_data.text,re.S) 70 person = re.findall('<title>人人网 - (.*?)的相册</title>',html_data.text,re.S)#人人网所属人 71 print('各相册信息:',album_name,album_id,album_photoNumber,album_number,person) 72 return album_name,album_id,album_photoNumber,album_number,person 73 74 def make_file(person,album_name,album_id): 75 """ 76 创建一级文件夹(以个人名字为文件名称)和二级文件夹(以相册名称命名),若存在则不重复建立 77 若存在或者创建成功key=1并返回路径,否则key=0 78 对文件命名规范不做限制,若失败直接pass 79 注意事项:读出的相册名称有时候显示中文,有时候显示成unicode形式,有时候两者均有;album_id是为了区别人人网上有重名的文件夹 80 :param person: <str> 个人名字,用来生成个人名下的一级文件夹 81 :param album_name: <str> 相册名字,用来生成同名文件夹 82 :param album_id:<str>相册id,用来创建同名文件夹 83 :return:<str> 相册所在路径 84 """ 85 86 file_path='' 87 album_name = album_name.encode("utf-8").decode("unicode_escape") 88 #按个人名字生成一级文件夹,成功创建或者已存在则key=1,否则key=0 89 if os.path.exists((os.getcwd() + '\人人网相册'+'/' + person)): 90 key = 1 91 else: 92 try: 93 os.mkdir(os.getcwd() + '\人人网相册'+'/' + person) 94 key = 1 95 except: 96 key = 0 97 print(key,'文件夹《' + person + '》创建失败,请查看命名方式!') 98 99 #在一级文件夹下(以key=1进行判断)生成各个相册的文件夹 100 if key == 1: 101 file_path = os.getcwd() + '/人人网相册' + '/' + person + '/' + album_name+'_'+ album_id#加id是为了解决文件夹重名问题 102 if os.path.exists(file_path): 103 pass 104 else: 105 try: 106 os.mkdir(file_path) 107 except: 108 print(key, '文件夹《' + album_name +'_'+ album_id+'》创建失败,请查看命名方式!') 109 key = 0 110 if key == 1: 111 #print(file_path) 112 return file_path 113 else: 114 #print('文件夹创立失败,请排查错误!') 115 return None 116 117 118 def get_album_link(user_link): 119 """ 120 通过个人主页正则匹配"个人相册"按钮链接 121 :param user_link: 个人主页网址,例如http://www.renren.com/24422****/profile 122 :return: <str>个人相册链接,例如http://photo.renren.com/photo/24422****/albumlist/v7?showAll=1 123 """ 124 html_data = requests.get(user_link, headers=headers) 125 #print(html_data.text) 126 album_link = re.findall('"(.*?)">相册', html_data.text)[0]+'?showAll=1'#获取个人相册的连接 127 print('个人相册链接:',album_link) 128 return album_link 129 130 131 if __name__=='__main__': 132 Host_url= 'http://www.renren.com/23231****/profile'#个人主页 133 Host_id = Host_url.split('/')[-2] 134 data = get_album_data(get_album_link(Host_url)) 135 person = data[4][0] 136 #print(person) 137 album_number = int(data[3][0])#相册数量 138 for i in range(0,album_number): 139 each_album_link = 'http://photo.renren.com/photo/'+Host_id+'/album-' + data[1][i] + '/v7' # 构造各个相册链接,data[1][i]是相册id 140 #each_album_link = 'http://photo.renren.com/photo/24422****/album-' + data[1][i] + '/v7' #构造各个相册链接,data[1][i]是相册id 141 print(each_album_link) 142 album_name = data[0][i] #相册名称 143 album_photoNumber = int(data[2][i]) 144 download_photo(each_album_link, album_photoNumber, album_name,data[1][i],person)
转载于:https://www.cnblogs.com/aby321/p/10315805.html
Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地~~~附源代码...相关推荐
- Python3爬取国家统计局官网2019年全国所有城市(2020年更新)
Python3爬取国家统计局官网2019年全国所有城市(2020年更新) 一级城市爬取 一级城市爬取 由于最近需要用到所有城市的数据,故从统计局爬取19年的一级城市数据 import random i ...
- Python3爬取国家统计局官网2017年全国所有城市县镇数据
最近由于项目需要用到全国城镇乡的数据,网上找了下大部分都是很久之前的,或者不理想的数据,某文库更是无论文章好不好都要下载券,所以索性自己用Python写爬虫爬数据,以下是代码(Python3.6版本) ...
- Python3爬取淘宝网商品数据!
分析淘宝网 这次选择的是淘宝网热卖而不是淘宝网,二者虽然名字有不同,但是数据还是一样的,区别就在于前者把后者的所有店铺和商品的海量数据按照销售量.好评度.信誉度综合测评.重新计算.重新排序展现给买家的 ...
- 记录用web scraper爬取裁判文书网的文书列表信息以及批量下载word文书
这个是一位网友在B站交流的一个问题,这里记录一下. 需求 1.爬取的网站地址:http://wenshu.court.gov.cn/website/wenshu/181217BMTKHNT2W0/in ...
- python3通过Beautif和XPath分别爬取“小猪短租-北京”租房信息,并对比时间效率(附源代码)...
爬虫思路分析: 1. 观察小猪短租(北京)的网页 首页:http://www.xiaozhu.com/?utm_source=baidu&utm_medium=cpc&utm_term ...
- Python3爬取免费小说网小说
一.准备工作 第一步,先查看一下python3是否有requests 和 BeautifulSoup4 这两个模块 1) 在命令行中输入python, 进入编辑模式 2) 输入下面指令: import ...
- python 爬虫爬取煎蛋网妹子图,我1T的硬盘装满了!
前言 大家好,这里是「brucepk」爬虫 系列教程.此系列教程以实例项目为材料进行分析,从项目中学习 python 爬虫,跟着我一起学习,每天进步一点点. 煎蛋网站 image 很多朋友都反应学 p ...
- Python网络爬虫8 - 爬取彼岸图网美图
彼岸图网收集了大量美图,是个不错的爬取对象.话不多说,直接上图. 分析站点 分类列表 爬取之前,自然要分析一波,这个站点的框架比较简单,从分类着手,共包含12个分类项. 4K人物 4K动漫 4K动物 ...
- Python2 Python3 爬取赶集网租房信息,带源码分析
*之前偶然看了某个腾讯公开课的视频,写的爬取赶集网的租房信息,这几天突然想起来,于是自己分析了一下赶集网的信息,然后自己写了一遍,写完又用用Python3重写了一遍.之中也遇见了少许的坑.记一下.算是 ...
- python3爬取巨潮资讯网的年报数据
python3爬取巨潮资讯网的年报数据 前期准备: 需要用到的库: 完整代码: 前期准备: 巨潮资讯网有反爬虫机制,所以先打开巨潮资讯网的年报板块,看看有什么解决办法. 巨潮咨询年报板块 可以通过这样 ...
最新文章
- Openresrt最佳案例 | 第2篇:Lua入门
- 网格搜索后返回的就是最佳的模型
- FINDCONTROL的详细介绍
- 第一次现场看球,第一次场看国家队打球,第一次场看国家队打架,第一次上电视,第... ......
- eventEmitter3源码分析与学习
- A - 小C语言--词法分析程序
- [OS复习]进程管理3
- Nginx在多层代理下获取真实客户端IP地址
- matlab里查看图像属性,MATLAB绘图属性操作
- linux接收数据并保存到环形缓冲区,自定义print函数缓存打印数据到环形缓冲区...
- 一些关于Spring的随笔
- 【吴恩达机器学习】学习笔记——1.3机器学习的定义
- mac mysql read only_mac Read-Only filesystem
- Telnet访问邮件服务器
- 数组索引越界异常和空指针异常
- 基于FPGA的ov5640摄像头简易图像采集装置详解
- 微信小程序获取用户openid(详解)
- 调用百度云短语音合成简单程序
- java 调用存储过程无反应_java调用存储过程无法取得返回参数
- 视觉SLAM十四讲CH9代码解析及课后习题详解
热门文章
- 转载 GIS的下个十年(Cary Mann, vice president, Bentley)
- html5 图片合成,H5案例分享:图片合成
- B. Silly Mistake(模拟、思维)
- MyEclipse详解
- 松翰单片机数码管c语言,松翰单片机数码管程序
- 张柏芝-从清纯走向堕落
- 什么是APS高级计划排程系统?APS计划排产有什么功能和作用?
- 【物理学】扫描隧道显微镜(Scanning Tunneling Microscope)
- 易基因 | 表观技术:单细胞及微量细胞全基因组重亚硫酸盐甲基化测序(scWGBS)
- 桌面点击鼠标右键一直显示转圈卡住如何解决