今天要讲的是Python。Python目前主要是在人工智能和数据分析上比较火。这里我们就讲它的数据分析。什么叫数据分析呢?

简单地说,根据已知数据,经过分析,得出结论。这就叫做数据分析。

今天聪哥哥我拿一个简单的爬虫实例,教你爬取美女图片,不过在此之前聪哥哥我得说说一些杂七杂八的。

这个教程,需要一定的Python基础,TCP/IP协议也得懂,具有一定的浏览器调试或者抓包经验。

当然了,最重要的是一个学习的心,一颗积极上进的心。

当然了,欲望也可以。聪哥哥我曾经看过一本叫《人类简史》的书,虽然当时没有很深的看,不过心中却产生了一个大胆的想法和论断,那就是,人类之所以进化并走到了现在,不外乎这两个字,“欲望”。也许已经有几百万年,毕竟有些专家的论断也不一定是可靠的,这个世界有太多的未知数。

不是非常了解和熟悉Python的小伙伴们,我在此推荐一个教程,廖雪峰Python教程:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

这个教程既有实例又有理论,双向结合。

个人建议学习这个教程时,应当采取的策略是:阅读+实践。

阅读+实践,针对的人群是有一定的编程基础,比如你学过C/C++,或者是被誉为世界上最强大的语言PHP。有一定的编程基础对于学习是非常有帮助的。当然了,还有一个更重要的就是兴趣。曾经记得某位大师说过:兴趣是最好的老师。我觉得一个人如何想要在技术这条路长远的走下去,兴趣是一个很重要的因素。

不过这个兴趣你可以分多种角度来看。

比如你真正对这门编程语言发自内心的爱,比如你收够了PHP的变态语法,觉得Python是如此的平易近人。

或者是你受够了C的很多难以驾驭的特性,比方说面向结构编程不如面向对象来的实际痛苦。面向结构,一听这个词,就不爽,结构有什么意思,还不如对象来的实际。一听对象这词就一个字爽。

再比如你对某某感兴趣,不打比方的,就直接说,你对美女图片非常感兴趣,每天不看就睡不着。记得我曾经的一个同学就是这样。每天费尽心机的到处搜索,还不如写个爬虫,大量的爬取图片,自己上传到百度云或者是其他的存储云上,想什么时候看就什么时候看,多爽啊。你看,这种人如果将自己的某某兴趣转移到学习,不说这个人一定会有一番大业,至少这个人,年薪百万不是梦。

下面进入正题(代码贴器,啪啪啪,稍微幽默下,记得某位名叫YOU什么去的大师曾说过:一个人如果没有幽默感,那将是一件非常可怕的事情):

test001.py(单进程)

#coding=utf-8
import requests
from bs4 import BeautifulSoup
import os
import sys
'''
#安卓端需要此语句
reload(sys)
sys.setdefaultencoding('utf-8')
'''if(os.name == 'nt'):print(u'你正在使用win平台')
else:print(u'你正在使用linux平台')header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.2107.204 Safari/537.36'}
#http请求头
all_url = 'http://www.mzitu.com'
start_html = requests.get(all_url,headers = header)#保存地址
path = 'D:/test/'#找寻最大页数
soup = BeautifulSoup(start_html.text,"html.parser")
page = soup.find_all('a',class_='page-numbers')
max_page = page[-2].textsame_url = 'http://www.mzitu.com/page/'
for n in range(1,int(max_page)+1):ul = same_url+str(n)start_html = requests.get(ul, headers=header)soup = BeautifulSoup(start_html.text,"html.parser")all_a = soup.find('div',class_='postlist').find_all('a',target='_blank')for a in all_a:title = a.get_text() #提取文本if(title != ''):print("准备扒取:"+title)#win不能创建带?的目录if(os.path.exists(path+title.strip().replace('?',''))):#print('目录已存在')flag=1else:os.makedirs(path+title.strip().replace('?',''))flag=0os.chdir(path + title.strip().replace('?',''))href = a['href']html = requests.get(href,headers = header)mess = BeautifulSoup(html.text,"html.parser")pic_max = mess.find_all('span')pic_max = pic_max[10].text #最大页数if(flag == 1 and len(os.listdir(path+title.strip().replace('?',''))) >= int(pic_max)):print('已经保存完毕,跳过')continuefor num in range(1,int(pic_max)+1):pic = href+'/'+str(num)html = requests.get(pic,headers = header)mess = BeautifulSoup(html.text,"html.parser")pic_url = mess.find('img',alt = title)html = requests.get(pic_url['src'],headers = header)file_name = pic_url['src'].split(r'/')[-1]f = open(file_name,'wb')f.write(html.content)f.close()print('完成')print('第',n,'页完成')

这个Python脚本如果执行报错,说是没有安装requests模块。

那么,你可以通过pip install requests 完成安装对应的依赖库即可,这个依赖库与Node.js中Npm的共同点,都可以相当于依赖库的管理。或者换句话说,pip 与ubuntu的 sudo apt-get install 安装软件的策略倒是十分相似。它们到底有什么区别,这里的重点不在于此。这里另外想要告诉你的一个IT哲理就是:技术无论千变万化,把握其本质,就可以以不变应万变。

当然了,这个不变应万变并不代表就不学习了。学习是人一生中的必做之事。比如男孩蜕变为一个男人,这也是一种学习。

学习无处不在,大家自行领悟。

test002.py(多进程)

#coding=utf-8
import requests
from bs4 import BeautifulSoup
import os
from multiprocessing import Pool
import sysdef find_MaxPage():all_url = 'http://www.mzitu.com'start_html = requests.get(all_url,headers = header)#找寻最大页数soup = BeautifulSoup(start_html.text,"html.parser")page = soup.find_all('a',class_='page-numbers')max_page = page[-2].textreturn max_pagedef Download(href,header,title,path):html = requests.get(href,headers = header)soup = BeautifulSoup(html.text,'html.parser')pic_max = soup.find_all('span')pic_max = pic_max[10].text  # 最大页数if(os.path.exists(path+title.strip().replace('?','')) and len(os.listdir(path+title.strip().replace('?',''))) >= int(pic_max)):print('已完毕,跳过'+title)return 1print("开始扒取:" + title)os.makedirs(path+title.strip().replace('?',''))os.chdir(path + title.strip().replace('?',''))for num in range(1,int(pic_max)+1):pic = href+'/'+str(num)#print(pic)html = requests.get(pic,headers = header)mess = BeautifulSoup(html.text,"html.parser")pic_url = mess.find('img',alt = title)html = requests.get(pic_url['src'],headers = header)file_name = pic_url['src'].split(r'/')[-1]f = open(file_name,'wb')f.write(html.content)f.close()print('完成'+title)def download(href,header,title):html = requests.get(href,headers = header)soup = BeautifulSoup(html.text,'html.parser')pic_max = soup.find_all('span')#for j in pic_max:#print(j.text)#print(len(pic_max))pic_max = pic_max[10].text  # 最大页数print(pic_max)'''
#安卓端需要此语句
reload(sys)
sys.setdefaultencoding('utf-8')
'''if __name__=='__main__':if (os.name == 'nt'):print(u'你正在使用win平台')else:print(u'你正在使用linux平台')header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.2107.204 Safari/537.36'}# http请求头path = 'D:/test/'max_page = find_MaxPage()same_url = 'http://www.mzitu.com/page/'#线程池中线程数pool = Pool(5)for n in range(1,int(max_page)+1):each_url = same_url+str(n)start_html = requests.get(each_url, headers=header)soup = BeautifulSoup(start_html.text, "html.parser")all_a = soup.find('div', class_='postlist').find_all('a', target='_blank')for a in all_a:title = a.get_text()  # 提取文本if (title != ''):href = a['href']pool.apply_async(Download,args=(href,header,title,path))pool.close()pool.join()print('所有图片已下完')

第一个脚本执行完毕,你会很疑惑,为什么爬取的图片都显示不能打开呢?明明资源就在哪,却什么都看不到,心里顿时不爽。

然后,发现还有第二个脚本,于是执行了,还是发现,两个脚本之间除了单线程执行和多线程执行的区别外,就没什么区别了。

其实原因,很简单,你还要一个忽略的,那就是防盗链,这个防盗链,你可以理解为反爬虫,爬虫早几年前是非常火爆的,那个时候,不少人因为爬虫而实现了财富自由。但是,随着会爬虫的人越来越多,人家网站也不是二百五,总是被你牵着鼻子走,防盗策略还是要的。

下面最后一个脚本,你会发现,当你执行完毕后,你就可以尽情的 嘿嘿嘿嘿了

test003.py

#coding=utf-8
import requests
from bs4 import BeautifulSoup
import osall_url = 'http://www.mzitu.com'#http请求头
Hostreferer = {'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)','Referer':'http://www.mzitu.com'}
Picreferer = {'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)','Referer':'http://i.meizitu.net'
}
#此请求头破解盗链start_html = requests.get(all_url,headers = Hostreferer)#保存地址
path = 'D:/test/'#找寻最大页数
soup = BeautifulSoup(start_html.text,"html.parser")
page = soup.find_all('a',class_='page-numbers')
max_page = page[-2].textsame_url = 'http://www.mzitu.com/page/'
for n in range(1,int(max_page)+1):ul = same_url+str(n)start_html = requests.get(ul, headers = Hostreferer)soup = BeautifulSoup(start_html.text,"html.parser")all_a = soup.find('div',class_='postlist').find_all('a',target='_blank')for a in all_a:title = a.get_text() #提取文本if(title != ''):print("准备扒取:"+title)#win不能创建带?的目录if(os.path.exists(path+title.strip().replace('?',''))):#print('目录已存在')flag=1else:os.makedirs(path+title.strip().replace('?',''))flag=0os.chdir(path + title.strip().replace('?',''))href = a['href']html = requests.get(href,headers = Hostreferer)mess = BeautifulSoup(html.text,"html.parser")pic_max = mess.find_all('span')pic_max = pic_max[10].text #最大页数if(flag == 1 and len(os.listdir(path+title.strip().replace('?',''))) >= int(pic_max)):print('已经保存完毕,跳过')continuefor num in range(1,int(pic_max)+1):pic = href+'/'+str(num)html = requests.get(pic,headers = Hostreferer)mess = BeautifulSoup(html.text,"html.parser")pic_url = mess.find('img',alt = title)print(pic_url['src'])#exit(0)html = requests.get(pic_url['src'],headers = Picreferer)file_name = pic_url['src'].split(r'/')[-1]f = open(file_name,'wb')f.write(html.content)f.close()print('完成')print('第',n,'页完成')

最终的结果如图所示:

小结:最后强调一句,结果不是最重要的,最重要的是这一个过程你学到了什么。

一句话,学习得带有一个明确的目的,这样你才会学的更快。另外上面的图只不过就是一个案例,我希望这个案例能促进广大的IT朋友们的学习热情,让大家的IT之路越走越顺。如果能达到这个目的,聪哥哥我也就觉得值了。

聪哥哥教你学Python之如何爬取美女图片相关推荐

  1. Python 爬虫多线程爬取美女图片保存到本地

    Wanning 我们不是生产者,我们只是搬运工 资源来至于qiubaichengren ,代码基于Python 3.5.2 友情提醒:血气方刚的骚年.请 谨慎 阅图 !!! 谨慎 阅图 !!! 谨慎 ...

  2. python 全自动化爬取必应图片

    python 全自动化爬取必应图片 from selenium import webdriver import requests import time import re import urllib ...

  3. python爬取美女图片的练习

    python 爬取美女图片的练习 主要使用 xpath 定位获取 图片的链接 本次练习使用到os库 ,lmxl库 , requests库 import requests from lxml impor ...

  4. python学习(十七) 爬取MM图片

    这一篇巩固前几篇文章的学到的技术,利用urllib库爬取美女图片,其中采用了多线程,文件读写, 目录匹配,正则表达式解析,字符串拼接等知识,这些都是前文提到的,综合运用一下,写个爬虫 示例爬取美女图片 ...

  5. Python爬虫——关键字爬取百度图片

    在日常生活中,我们经常需要使用百度图片来搜索相关的图片资源.而如果需要大量获取特定关键字的图片资源,手动一个个下载无疑十分繁琐且费时费力.因此,本文将介绍如何通过Python爬虫技术,自动化地获取百度 ...

  6. 方法教程 | Python爬虫:爬取风景图片

     "突发奇想,给各位爬爬壁纸图片,话不多说,开始行动.如果文章对你有帮助,点赞,收藏." 一,知道爬取自己想要的壁纸图片网址     模型写出来 '''爬取网络图片1,要到主页面的 ...

  7. 利用python爬虫大量爬取网页图片

    最近要进行一类图片的识别,因此需要大量图片,所以我用了python爬虫实现 一.爬取某一图片网站 主要参考:https://www.cnblogs.com/franklv/p/6829387.html ...

  8. Python网络爬虫——爬取网站图片小工具

    最近初学python爬虫,就写了一个爬取网站图片的小工具,界面如下: 用到的包主要是爬虫常用的urllib,urllib2和图形界面用的Tkinter,完整代码如下: # -*- coding:utf ...

  9. Python网络爬虫(四):selenium+chrome爬取美女图片

    说明: Python版本:Python IDE:PyCharm chrome版本:我的版本63 chromedriver.exe:因为是模拟浏览器访问,chrome需要再下载一个驱动,具体方式在我的上 ...

  10. python如何爬取图片_百度图片爬虫-python版-如何爬取百度图片?

    上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://5912119.blog.51cto.com/5902119/1771391 这一篇我想写写如何爬取百度图片的爬虫, ...

最新文章

  1. ecshop模板smarty foreach详解 [ECshop]
  2. php批量请求url_php请求url的方法小结
  3. [讨论] 线程池 vs 专有线程
  4. professor‘s great paper in multi agent system
  5. linux 命令 ppt,Linux基本命令()讲解.ppt
  6. notepad python设置_NotePad++上配置Python
  7. php 三种传递函数,php – 是否可以将传递函数传递给包含的文件?
  8. 动力环境监控系统论文_机房动力环境监控系统方案
  9. React项目build之后资源文件路径不正确或打开空白页的问题及简易解决方法
  10. java+jdk+1.6.0+45+64_jdk1.6.0_45.tar.gz
  11. 7.从Paxos到Zookeeper分布式一致性原理与实践---Zookeeper 技术内幕
  12. 两种“新型”的javaweb后门(jspx和Java Logger)
  13. [2019/12]饮水姑苏,止于至善
  14. 吴恩达deeplearning之CNN—人脸识别与风格化转换(2)
  15. 曾经懵懂少年,曾经年少轻狂
  16. 【办公基本软件】万彩办公大师教程丨批量文件目录生成器
  17. Python批量读取txt文件
  18. 王学岗——————H265实现低延时投屏,从零实现高清无损投屏(对应第六节课)
  19. Python:enumerate函数
  20. 五,JavaScript数组·上

热门文章

  1. 递归神经网络教程请签收!
  2. Clip_by_norm 函数理解
  3. fedora oracle使用,【解决方案】连接到Fedora 14上的Oracle数据库服务器
  4. IE11设置默认以IE8的方式解析
  5. qq手机助手连接服务器失败是什么原因,按键精灵手机助手教程,按键精灵手机助手连不上手机解决方法...
  6. 汽车抛负载瞬态7637-5A/5B测试,您不知道的都在这里
  7. Windows中I/O完成端口机制详解
  8. c++实现吃豆子游戏
  9. i.MX6ULL处理器GPIO寄存器配置原理
  10. html 保存 文字变乱码怎么办,html文字为什么会乱码