哈哈,这是我第一篇博客
半年以后回来再看发现这代码简直太难看了
现在已经弃用大小驼峰转蛇形命名了
确实好看
除了命名别的也写的不怎么样
因为爬虫只是个爱好所以也不准备再投入时间重构了
将就着看吧

1.主要的库:

1.requests
2.Pillow
请自行安装

2.目标网址:

http://pic.netbian.com/

声明:此网址是随便找的,代码仅供技术交流使用,如有侵权请联系本人删除

3.思路

如何得到每张图片的具体位置呢?

首先找到在哪一个分页

打开页面,F12查看源码,我的浏览器是Firefox

然后鼠标移到分页的2上,右键查看元素,可以看到

这就是每个分页的部分URL,验证一下,浏览器中输入 pic.netbian.com/index_5.html ,自动跳转到彼岸图网第五分页
首页是index.html,分页的部分URL格式为index_[0-9]*.html
然后在分页中找以缩略图形式显示在页面上的子页面URL
上图中为/tupian/24556.html

如果只需要低像素的缩略图的话,现在就可以开始爬了,上图中缩略图图片的部分URL格式为/uploads/allimg/.*a.jpg

注意区分这两个概念

如果需要大图,那么就要在/tupian/24556.html下继续去找大图的具体位置。点开缩略图,右击大图,查看元素,找到格式为/uploads/allimg/.*be.jpg的代码,就是这张大图的URL了。

当然不是所有的大图都是xxxbe.jpg格式的,所以不能用正则匹配be.jpg$的格式去处理,查看子页面中大图代码的位置,都是第一个出现的,其余的都是推荐的相似图片的URL,为了防止重复爬取缩略图图片,可以用正则^/uploads/allimg/.*.jpg去匹配,只要找到一个就break,然后分析下一个子页面的html代码。

如下,在点开缩略图后还有相似图片推荐,为了不重复抓取,会在代码中作处理

4.代码

要写爬虫首先要对Web有一定的了解,要是连查看源码都不会就更别说分析了,所以还是先好好学学Web再去写爬虫,不说会做网页,最起码要能看懂个大概。按我的理解,爬虫实际上就是模拟了浏览器的行为,所以在代码中把上述的步骤实现了就ok

#coding:gbk'''
Author: CSDN wuming7847
转载请注明出处
'''
import requests
from PIL import Image
from io import BytesIO
import re
from requests.exceptions import HTTPErrorroot="http://pic.netbian.com/index_%d.html"
#除首页外所有分页的统一格式uni="http://pic.netbian.com"
#子页面和大图的URL前缀AllPage=[]
#要爬取的分页URLAllImgHTML=[]
#缩略图代表的子页面的部分URL,格式为/tupian/.*.htmlAllImgURL=[]
#每张大图的部分URL,格式为/uploads/allimg/.*.jpgdef GetPageURL(root,Start,counts):
#得到每个分页的URL放到AllPage中if Start==1:AllPage.append("http://pic.netbian.com/index.html")#将非标准格式的首页URL放入for i in range (Start+1,Start+counts):newURL=root.replace("%d", str(i))AllPage.append(newURL)else:   for i in range (Start,Start+counts):newURL=root.replace("%d", str(i))AllPage.append(newURL)def GetImgHTML(AllPage):
#得到每个分页中子页面的URL放到AllImgHTML中     for PageURL in AllPage:try:res=requests.get(PageURL)res.raise_for_status()                      except HTTPError:print("HTTP Error!")except ConnectionError:print("Failed to connect!")with open("C:\\Users\\PageFile.txt","w",encoding="ISO-8859-1") as PageFile:PageFile.write(res.text)PageFile.close()with open("C:\\Users\\PageFile.txt","r",encoding="gbk") as ReadFile:           str=ReadFile.read()mid=re.split("\"", str)#用"进行分割,以进行正则表达式匹配for i in mid:           ImgHTML=re.findall("^/tupian/.*.html$",i)#提取所有符合格式的str放到ImgHTML中if len(ImgHTML)!=0:AllImgHTML.append(ImgHTML[0])def GetImgURL():
#得到每个分页中每个子页面的大图的URL放到UsefulImgURL中               UsefulImgHTML=[None for i in range(len(AllImgHTML))] #为字符串拼接分配内存  for i in range(len(AllImgHTML)):UsefulImgHTML[i]=uni+AllImgHTML[i]#拼接后得到了可用的子页面URL,格式为http://pic.netbian.com//tupian/.*.htmlfor html in UsefulImgHTML:#对图片组进行请求try:htmlres=requests.get(html)htmlres.raise_for_status()           except HTTPError:print("HTTP Error!")except ConnectionError:print("Failed to connect!")with open("C:\\Users\\ImgHTML.txt","w",encoding="ISO-8859-1") as ImgHTML:ImgHTML.write(htmlres.text)ImgHTML.close()with open("C:\\Users\\\ImgHTML.txt","r",encoding="gbk") as ReadHTML:           str=ReadHTML.read()mid=re.split("\"", str)           for i in mid:ImgURL=re.search("^/uploads/allimg/.*.jpg$",i)              if ImgURL is not None:                   AllImgURL.append(ImgURL[0])break#爬到一个大图的URL即break。将每张大图的部分URL存入AllImgURL中,格式为/uploads/allimg/.*.jpgUsefulImgURL=[None for i in range(len(AllImgURL))]#拼接得到最终可供下载的URL放到UsefulImgURL中for i in range(len(AllImgURL)):UsefulImgURL[i]=uni+AllImgURL[i]return UsefulImgURL                def DownloadWallpaper(url,path):try:res=requests.get(url)res.raise_for_status()MyImage=Image.open(BytesIO(res.content))MyImage.save(path)print("Done...")except HTTPError:print("HTTP Error!")except ConnectionError:print("Failed to connect!")if __name__=="__main__":GetPageURL(root, 2, 2)GetImgHTML(AllPage)UsefulImgURL=GetImgURL()            num=[]for i in range (len(UsefulImgURL)):num.append(i)    UsefulSavePath=[None for i in range(len(UsefulImgURL))]  for i in range(len(UsefulSavePath)):UsefulSavePath[i]="C:\\Users\\"+str(num[i])+".jpg"for i in range(len(UsefulImgURL)):print(i,end=" ")DownloadWallpaper(UsefulImgURL[i],UsefulSavePath[i])print("Task completed!")

说明:
1.要爬取从第几页开始的连续几页,就在主函数中修改GetPageURL(root,start,counts)中start和counts的值
2.自己改存放路径,windows下文件操作的路径是\\而非\
3.图片的名字都是[0-9]*.jpg的格式,有兴趣的可以自己把大图的名字也爬下来设置为图片名称
4.高清原图需要登录,留坑

Python爬虫:彼岸图网图片爬取相关推荐

  1. python爬图片_Python爬虫:彼岸图网图片爬取-Go语言中文社区

    杂 哈哈,这是我第一篇博客 半年以后回来再看发现这代码简直太难看了 现在已经弃用大小驼峰转蛇形命名了 确实好看 除了命名别的也写的不怎么样 因为爬虫只是个爱好所以也不准备再投入时间重构了 将就着看吧 ...

  2. 多线程爬虫实战--彼岸图网壁纸爬取

    多线程爬虫实战–彼岸图网壁纸爬取 普通方法爬取 import requests from lxml import etree import os from urllib import requesth ...

  3. python爬虫——百度贴吧图片爬取 小项目

    项目目的: 爬取贴吧中所有帖子里面的图片 将爬取到的图片存储到名称为贴吧名称的文件夹中 项目环境 python版本:python3.6 用到的库:requests.etree.unquote 浏览器: ...

  4. Python彼岸图简易图片爬取保存

    以下内容仅供学习参考 提前说明,以下操作需要拥有网站会员后才可进行操作,否则网站本身限制下载数量,并且无法访问页面内容!!! 目前的需求是需要把风景分类的图片全部保存下来,再决定哪些是自己需要的,哪些 ...

  5. python爬虫爬取彼岸图网图片

    python爬虫爬取彼岸图网图片 话不多说,直接上代码! import requests from PIL import Image from io import BytesIO import re ...

  6. 用Python爬取彼岸图网图片

     用Python爬取彼岸图网图片 *使用了  四个模块 import time import requests from lxml import etree import os 没有的话自行百度安装. ...

  7. Python爬虫 | 斗图网表情包抓取

    Python爬虫 | 斗图网表情包抓取 1.数据来源分析 2.制作div_list 3.发起请求 4.保存图片 5.批量获取 6.完整代码 声明 1.数据来源分析   打开斗图吧的主页,发现网址非常有 ...

  8. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  9. python爬虫实战(一)--爬取知乎话题图片

    原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...

最新文章

  1. iOS 页面间几种传值方式(属性,代理,block,单例,通知)
  2. 技术前沿:Redis推出性能碾压ES和Mongo的大杀器
  3. 梳理百年深度学习发展史-七月在线机器学习集训营助你把握深度学习浪潮
  4. python中字母大小顺序,如何在Python中按字母顺序对unicode字符串排序?
  5. JVM JRE JDK,这些东西到底是什么?(转载)
  6. 初学echart的简单使用
  7. 2017华为机试题--Floyd算法
  8. 基于FPGA实现Camera Link接口
  9. 你们一般持有几支基金?怎么管理的?
  10. Python:如何安装与使用 pip
  11. java asm methodvisitor 定义局部变量_Java ASM3学习(3)
  12. Java基础学习(2)-注解
  13. 《测绘管理与法律法规》——测绘质量管理体系
  14. 计算机系统的结构分类,图解计算机结构与系统分类!!
  15. 百度云盘加速器for mac
  16. 激活函数:双曲正切函数 tanh(x)
  17. janusgraph 引入 java,janusgraph 默认server使用手记
  18. 《传习录》 学习笔记
  19. c++ PDFium pdf转为图片(实例)
  20. 实现类似于目录的虚线填充样式

热门文章

  1. 邵武计算机培训机构在哪里,邵武云计算培训,邵武计算机培训价格,邵武计算机培训有哪些 - IT教育频道...
  2. MANIFEST.MF文件
  3. 电子沙盘系统android,电子沙盘系统
  4. 心理测试软件沙盘游戏,如何学习沙盘游戏
  5. 交流电机是如何工作的
  6. 计算机网络电子邮件的格式,计算机网络基础之申请电子邮箱
  7. androig中相机的使用
  8. OGNL表达式的入门
  9. 明日之后哪个服务器最多主播,明日之后:主播成游戏最大毒瘤,玩家列举三大“罪状”,很真实!...
  10. 服务器e5与e7性能差异,英特尔:至强E3、E5和E7服务器处理器