仙女姐姐@chuu chloe和@什么七七——python图片爬虫

两年以前用爬虫爬过一个学校网站,现在忘得那是一干二净。可不成想,望着众多的美女图片,我竟然也会有嫌麻烦的时候。或许我应该说,是眼前这让人眼花缭乱目不暇接的美好,让我感叹时间的宝贵,想要迅速将她们“一网打尽”,我找到高分chrome插件,却发现这些插件只能下载部分图片,于是我从头捡起爬虫,写下这篇整理性的文章。没有需求,哪来的学习的动力?

最简单的爬虫

首先必须说的是,我不需要写那种一爬爬全站的爬虫,我只看好看的XD。这次看到的是这位chuu chloe姐姐,大家或许见过,绝对一见倾心的那种。爬的网站是我时不时逛逛的宅男吧,上面有时会有高质量的图。我没有大量爬图,不会对网站产生什么影响。目标网址:http://zhainanba.net/21483.html。贴一张目标截图:

我第一眼看到这位姐姐,就看呆了,已经说不出话来。我想说,看到她我好像看到了无人的纯白雪山——她值得我为她写一个爬虫。

初次尝试

爬虫重要的不是代码,而是分析网页的方法。老规矩F12进行审查。

很快注意到图片的url是由数字结尾,按尾数进行循环便能将这些图全爬下来。首先只写这么一个简单的规则找点感觉。

### 如果url规则简单到能一眼看出,直接用简单的版本。b
# 导入常用的爬虫包
import urllib.request
import re
import os
import requests# 定义一个路径函数,用来确定保存图片的路径
targetDir = input('图片存储路径')def destFile(path):if not os.path.isdir(targetDir): # 如果路径不存在则创建os.mkdir(targetDir)pos = path.rindex('/') # 以最后一个斜杠后的字符作为图片名称t = os.path.join(targetDir,path[pos+1:])return t fail_url = [] # 这个列表是为了记录下之后可能出现的超时情况
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36','Referer': 'http://zhainanba.net/21483.html'}

注意到我这里的header里写了referer,第一次写没有写referer,是我小看了这个网站,我以为他不会有反爬措施,没想到还是采用了基本的反爬。。。referer简单来说就是标识“你是从哪个网站来到这个网站的”,如果不加referer的话会报404(推荐写header时把能加的信息都加上)。

爬虫代码

下面写爬虫体。我加了一个超时处理的步骤,因为在运行时发现有些图片在request时会卡住,可能网站有进一步的反爬措施,具体的之后得检查源码才能看出是网络问题还是有反爬机制。

if __name__ == "__main__":for i in range(1,31,1): # 爬尾号为1 - 30 的所有图片i = str(i)if len(i) < 2: # 之前注意到url中尾数小于10都补了零,这里也用简单的判断补上i = '0' + ielse:passlink = 'http://ac.meijiecao.net/ac/img/znb/meizitu/20190611_meizitu_' + i + '.jpg' # 爬取的图片urlprint(link)try: r = requests.get(link,headers = header,timeout=(10,10)) # 用timeout和try来防止超时filename = destFile(link)if r.status_code == 200: # 响应码为200时才进行写入,304和404都不写open(filename,'wb').write(r.content) print(r.status_code,'Sucess!')del r else:print(r.status_code,'Fail.')passexcept:print(link,'Timeout.')fail_url.append(link) # 将超时的url加入列表pass

运行结果如下:

因为图片有水印,这里也不便于直接放出,给出链接:链接: https://pan.baidu.com/s/1leTJLlw8mm7AVlP_hb9ATg 提取码: 16ti

再战:采用BeautifulSoup

老是去查看url的尾数也不是长久之计,很多url都不规则,不可能每一次都去找规律,所以用网页解析器才是正道。简单的parser我选BeautifulSoup。bs4的全面用法我推荐Beautiful Soup 4.4.0 文档。这次换一个爬,@什么七七 这位小姐姐也是一位仙女。

# parse html with bs4, urls from zhainanba
from urllib import request
from bs4 import BeautifulSoup
fail_url = []
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36','Referer':'http://zhainanba.net/tag/%e7%bd%91%e7%bb%9c%e7%ba%a2%e4%ba%ba'} # referer和url需要自己更改,懂的都懂,不懂只能查targetDir = input('图片存储路径')def getHTMLcode(url):re_url = request.Request(url,headers=header)page_code = request.urlopen(re_url).read()return page_code.decode('utf8')def getImg(page_code):soup = BeautifulSoup(page_code,'html.parser')image_list = soup.find(attrs={'class':'article-content'}) # 查看源码可知所有的图片都在article-contentimage = image_list.find_all('img') # 图片在article-content下的img里for img in image:img_url = img.get('src') # 图片的url在src里print(img_url)try: r = requests.get(img_url,headers = header,timeout=(10,10)) # 用timeout和try来防止超时filename = destFile(img_url)if r.status_code == 200: # 响应码为200时才进行写入,304和404都不写open(filename,'wb').write(r.content) print(r.status_code,'Sucess!')del r else:print(r.status_code,'Fail.')passexcept:print(img_url,'Timeout.')fail_url.append(img_url)passurl = 'http://zhainanba.net/22631.html'
page_code = getHTMLcode(url)
getImg(page_code)

结果如下:

也分享在网盘里:

链接: https://pan.baidu.com/s/1jot8BkVSVB9JT-599fZSDA 提取码: bp63

总结

写爬虫不仅是为了短时间获得自己想获得的东西,也是为了以后的一些小项目做准备。其中的一个想法是,如果要训练仙女们的脸部模型,大批量的照片必不可少,所以之后可能要挑战sina的反爬机制,或者找一些图量大的网站琢磨一下。这个过程中,肯定会积累很多的优质图片,不只有仙女,还会有那些不太上得了台面的东西,我就不说了,我挺相信我的眼光的。

仙女姐姐@chuu chloe和@什么七七——python图片爬虫相关推荐

  1. python——图片爬虫:爬取爱女神网站(www.znzhi.net)上的妹子图 进阶篇

    在上一篇博客中:python--图片爬虫:爬取爱女神网站(www.znzhi.net)上的妹子图 基础篇 我讲解了图片爬虫的基本步骤,并实现了爬虫代码 在本篇中,我将带领大家对基础篇中的代码进行改善, ...

  2. python图片-利用python进行识别相似图片(一)

    文章简介 在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能 ...

  3. python爬虫图片工具安卓版下载_python图片爬虫(图片爬虫工具) 1.1绿色版

    python图片爬虫(图片爬虫工具)是一款专门为互联.it行业的小伙伴们打造的爬虫工具,可以帮大家对软件进行优化.seo的人一定会用的上哦,有兴趣的赶紧下载了哦!python图片爬虫代码如下: #-* ...

  4. python 图片 文本 矫正

    python 图片 文本 矫正 代码 # -*- coding: UTF-8 -*- import numpy as np import cv2 import os ## 图片旋转 def rotat ...

  5. python图片识别-Python+Opencv识别两张相似图片

    在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在本文简 ...

  6. python爬虫抓取图片-python网络爬虫源代码(可直接抓取图片)

    在开始制作爬虫前,我们应该做好前期准备工作,找到要爬的网站,然后查看它的源代码我们这次爬豆瓣美女网站,网址为:用到的工具:pycharm,这是它的图标 ...博文来自:zhang740000的博客 P ...

  7. python图片通道分离

    python图片通道分离 文章目录: 一.通道分离的方法 1.opencv的split()函数 2.使用Numpy 数组分离图像通道 二.通道合并的方法 1.opencv自带的merge() 函数 2 ...

  8. python图片转字符画

    学习了下python图片转字符画,学习连接:Python 图片转字符画,觉得还挺有趣,不过图片的颜色和细节不能太多,不然效果比较差,代码如下: from PIL import Image import ...

  9. 2021-03-10 Python多线程爬虫快速批量下载图片

    Python多线程爬虫快速批量下载图片 1.完成这个需要导入的模块 urllib,random,queue(队列),threading,time,os,json 第三方模块的安装 键盘win+R,输入 ...

最新文章

  1. objective-C 中使用@Class和 #import区别
  2. Windows 编程之 对话框总结
  3. EntityFramework之摸索EF底层(八)
  4. 关于知识整理、积累与记忆
  5. jQuery构建路由
  6. Codeforces Round #507 (Div. 1) D. You Are Given a Tree 根号分治 + dp
  7. 基于结构体的二进制文件读写
  8. stl源码剖析_STL源码剖析 阅读笔记(二)allocator
  9. linux一些杂项整理
  10. 抖音api开放平台对接_抖音新增酒店预订等功能,一只脚踏进美团、携程腹地
  11. 记一次Ubuntu安装nodeJs过程
  12. 常见十四种的Java算法
  13. 在国产银河麒麟v10操作系统下安装亿图图示(VISIO替代品)
  14. 关于GraphEasy的简单捣腾
  15. 光纤通信原理实验箱QY-JXSY03
  16. Linux数独小游戏C语言,C语言数独游戏的求解方法
  17. android之Goolgle Map
  18. html语言定义诗歌教学实例,小班语言活动案例分析:古诗清明
  19. Java基础-JVM
  20. [ECCV2022]3D face reconstruction with dense landmarks

热门文章

  1. java输出GPA_请完成下列Java程序:实现换算GPA,对于学生学习的每一门课程,都输入两个..._考试资料网...
  2. unity应用实例——从头撸一个全新的FPS游戏(5)
  3. php ecb加密,PHP之DES加密解密算法类(ECB模式)(实例教程)
  4. 三大视角,聊聊我眼中的广告系统
  5. html 用户列表,用户列表.html
  6. linux打开xml文件,xml文件扩展名,xml文件怎么打开?
  7. 前端页面 数据处理input、textarea输入框实时 统计字数(真实字数)
  8. OH~My Godness ~!被点到了...
  9. three.js html5,html5 – 使用Three.js进行纹理喷涂
  10. Matlab最实用画图命令整理(包括Print输出SCI论文高清大图!)