首先得解决环境和工具的问题
Python基础教程
Python3基础教程
大家也可以去慕课网看视频学习哦,关于选择Python2还是Python3的问题,上手的话还是直接选择3吧。

关于爬虫

爬虫就是在互联网中执行爬取有用信息的程序,总的工作流程如下:
找到爬虫入口->获取目标链接->下载网页-> 解析网页 -> 获取价值信息 ->存库(文件保存)操作

首先给自己一个伟大的小目标吧!或许明天的UC头条就是,震惊!一16岁编程奇才爬取某社区2亿条用户数据。

开始吧

我们的目标就从一个图片网站开始吧,坐好啦,老司机要发车了 –> mzitu.com

http://www.mzitu.com/all 每日更新页面给了我们一个很好的爬虫入口,良心站长,F12进入浏览器调试模式,更方便开发人员观察

找到入口和目标链接之后开始下载网页

# -*- coding: UTF-8 -*-
from urllib import request#目标抓取网页
src = 'http://www.mzitu.com/all'
#浏览器请求头(大部分网站没有这个请求头可能会报错)
mheaders = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}#读取一个网页
def getHtml(url):req = request.Request(url,headers=mheaders) #添加headers避免服务器拒绝非浏览器访问page = request.urlopen(req)html = page.read()return html.decode('utf-8')  # python3 python2版本直接返回htmlprint(getHtml(src))

urllib.request.urlopen()请求你个网页,是不是so easy,各位看官,你老厉害了。

拿到这个入口网页之后,我们顺着主线走,不要迷路了,那么入口网页里面用有的价值是什么了,当然是妹子,恩我们要奔着套路地址去,这里我们需要用到beautifulsoup4 ,当然高手一般都是使用正则表达式的,可是菜鸟真的合适吗,虽然bs4效率低一点,但是对开发人员友好啊。获取bs4方法,前提是你需要配置好python和pip(pip工具是python自带的)的环境变量,这里不赘述了

pip install beautifulsoup4

好了,继续前行吧。去拿到我们的子目标,首先我们得明确子目标

# -*- coding: UTF-8 -*-
from urllib import request
from bs4 import BeautifulSoup#目标抓取网页
src = 'http://www.mzitu.com/all'
#浏览器请求头(大部分网站没有这个请求头可能会报错)
mheaders = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}#读取一个网页
def getHtml(url):req = request.Request(url,headers=mheaders) #添加headers避免服务器拒绝非浏览器访问page = request.urlopen(req)html = page.read()return html.decode('utf-8')  # python3 python2版本直接返回html#从入口爬取所有的目标链接
def getallUrl(html):#构造一个bs对象soup = BeautifulSoup(html, 'html.parser')#使用bs对象寻找class为all的div 然后再寻找这些div里面的a标签,可能我们需要多试几次才能准确的getall = soup.find('div',class_='all').find_all('a')for li in all:print(li)getallUrl(getHtml(src))

行了,我们又有目标了,遍历这些目标,最后在子目标里面寻找最终目标,对最终目标进行存库(文件操作)即可完成我们这次探险了!

最后一段旅程需要各位生手自行探索,老衲先行告退。对了,地图拿走不谢:

# -*- coding: UTF-8 -*-
from urllib import request
from bs4 import BeautifulSoup
import uuid
import time#目标抓取网页
src = 'http://www.mzitu.com/all'
#浏览器请求头(大部分网站没有这个请求头可能会报错)
mheaders = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}#读取一个网页
def getHtml(url):req = request.Request(url,headers=mheaders) #添加headers避免服务器拒绝非浏览器访问page = request.urlopen(req)html = page.read()return html.decode('utf-8')  # python3 python2版本直接返回html#从入口爬取所有的目标链接
def getallUrl(html):#构造一个bs对象soup = BeautifulSoup(html, 'html.parser')#使用bs对象寻找class为all的div 然后再寻找这些div里面的a标签,可能我们需要多试几次才能准确的getall = soup.find('div',class_='all').find_all('a')print(len(all))#无聊打印点什么for li in all:subSrc = li.attrs['href']subHtml = getHtml(subSrc)subSoup = BeautifulSoup(subHtml, 'html.parser')page = subSoup.find('div', class_='pagenavi').find_all('span')#page[-2]是表示数组从右(末端数2个) maxpage拿到套图最后一页maxPage = page[-2].get_text()i = 1while (i <= int(maxPage)):time.sleep(0.08) #休息0.08s,防止服务器拒绝频繁请求tagetSrc = subSrc + '/' + str(i)tagetHtml = getHtml(tagetSrc)tagetSoup = BeautifulSoup(tagetHtml, 'html.parser')img = tagetSoup.find('div', class_='main-image').find('img')print(time.time())#无聊打印点什么#uuid()构造一个世界唯一字符串,为了防止文件重名name = img.attrs['alt'] + str(uuid.uuid4())imgsrc = img.attrs['src']print(imgsrc + "-----" + name)#无聊打印点什么try:#这里的指定存储路径,需要注意的是这里需手动创建文件夹,如需自动想、可以使用os库request.urlretrieve(imgsrc, 'D:\\meizi\\' + '%s.jpg' % name)  # 指定目录位置except BaseException:#捕获异常情况print('Error:there is something wrong!')# 遇到IOError: [Errno socket error] [Errno 10060]服务器拒绝频繁访问 阻塞1stime.sleep(1)try:request.urlretrieve(imgsrc, 'D:\\meizi\\' + '%s.jpg' % name)  # 指定目录位置except BaseException:print('Error:there is something wrong!over')# print(tagetSrc)i += 1print('end')
#开始
print('begin')
getallUrl(getHtml(src))
#结束
print('over')

成果

好了,这次旅行到此结束,对于这次初次旅程还满意吗?给各位老厉害的看官留几个宝箱吧:
1.这种方式爬取数据存在什么弊端?该怎么完善?
2.有什么方法提高爬取效率?
3.反面思考我们的web网站怎么防止被机器爬取数据?
4.我们的爬虫(机器)面对验证码,登录等问题怎么处理?

最后

谢谢站长

【Python】从爬虫开始吧——爬取妹子图整站相关推荐

  1. python爬虫爬妹子图_【爬虫】直接上干货-爬取妹子图整站图片

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #coding=utf-8 import os import requests from lxml import etree import time cl ...

  2. python爬取妹子图片1_【爬虫】直接上干货-爬取妹子图整站图片

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #coding=utf-8 import os import requests from lxml import etree import time cl ...

  3. 【Python】爬虫(Xpath):批量爬取彼岸图网4K图(非真正4K)

    因为真正的4K图需要登录,并且登录后一天也就只能下载一张,所以就只解析爬取了内容页的高清图片(1200*633左右) 代码实现了我目前所能想到的用户骚操作的判定,例如选择的类目不在这个网站内, 或者这 ...

  4. [day1]python网络爬虫实战:爬取美女写真图片

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.实现 1.分析url格 ...

  5. [day2]python网络爬虫实战:爬取美女写真图片(增强版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.实现 1.分析url格 ...

  6. Python【爬虫实战】爬取美女壁纸资源

    Python[爬虫实战]爬取美女壁纸资源 一:首先选取一个网站,这里我们选择了一个壁纸网站 二:进入网站,我们可以看到很多图片放在一页里 三:按下F12开发者工具,点击Elments查看网页的代码 四 ...

  7. [day4]python网络爬虫实战:爬取美女写真图片(Scrapy版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.Scrapy简介 4. ...

  8. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(二)

    文章目录 思路梳理 封装函数 重要提示 系列文章 思路梳理 我们打开网页,可以看到这其中有许多链接,我们可以查看一下网页源代码,可以看到如我们所期盼的一样,这里有许多的链接,我们只需要把链接爬取出来就 ...

  9. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(一)

    经过一晚上的休息,我已经重新从阴影中站了起来,并重新发现了一个人性化的网站,一起来看看这个网站吧 来到了人民教育出版社的官网,一看,顿时晕眩三秒,我昨天的努力不都白费了吗,只得重新打起精神,研究一下这 ...

最新文章

  1. linux删除指定创建时间文件(文件夹)脚本
  2. Ice “Hello World”的实现
  3. 每日一皮:你不看我的接口文档就乱调的吗?
  4. API设计中防重放攻击
  5. how is service url defined in configuration.js consumed
  6. 详解各类以太网标准10BASE-T/100BASE-T4/100BASE-FX/1000BASE-X等
  7. UML中关联,聚合,组合的区别及C++实现
  8. scenebuilder各控件属性介绍_Flutter 全栈式——基础控件
  9. 解决cannot import name ‘finance‘ from ‘matplotlib‘报错与问题解析
  10. 疑似荣耀30S将于今日正式官宣:首发搭载全新麒麟820芯片
  11. 一口气看完了蔡学镛的--爪哇夜未眠(第二版)
  12. ext2文件系统初步
  13. 网络号、主机号、子网号--例题
  14. 教你如何给小米5续命
  15. 那些吸引眼球的微信标题你会么?
  16. JavaScript实现猜数字游戏(猜一位和四位数字)
  17. 9 9简单的数独游戏python_如何使用tkinter gui python创建一个9*9的数独生成器?
  18. 美团大众点评合并:背后技术力量的对比回顾
  19. python matplotlib 地图_Python数据可视化,看这篇就够了
  20. Android WebView显示广告

热门文章

  1. 2010年01月读书单
  2. ORA-21561: OID generation failed
  3. 【每日一题 】修改成绩 、杀手问题
  4. csharp基础练习题:符号计数【难度:1级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练
  5. Go:pythagoras毕达哥拉斯算法(附完整源码)
  6. Ubuntu 16.04 kinetic安装教程
  7. HarmonyOS实战——TickTimer定时器组件基本使用
  8. React Native 音频录制例子来解惑入门,真的已经讲烂了
  9. 部分ARCGIS菜单翻译——初练
  10. 计算方法实验(五):高斯列主元消去法