import requests
from bs4 import BeautifulSoup
import os  #导入os模块class TuKuSpider():"""docstring for TuKuSpider"""def __init__(self):self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}self.url='http://588ku.com/tuku/jiepai.html'self.folder_path='E:\TuKuImg'def get_img_url(self):print('开始请求页面')init_response = self.request(self.url)all_img = BeautifulSoup(init_response.text,'lxml').find_all('img',class_='lazy')print('开始创建文件夹')self.mkdir(self.folder_path)  #创建文件夹print('开始切换文件夹')os.chdir(self.folder_path)   #切换路径至上面创建的文件夹for each in all_img:img_url = each.get('data-original')img_name = each.get('alt')if img_name == None:img_name = 'NoName'if img_url[-3:]=='png':img_url_final = 'http:'+img_urlimg_response = self.request(img_url_final)self.save_png(img_url_final,img_name)else:img_url = img_url[:img_url.index('.jpg')+4]img_url_final = 'http:'+img_urlimg_response = self.request(img_url_final)self.save_jpg(img_url_final,img_name)def request(self,url):r=requests.get(url,headers=self.headers)return rdef save_jpg(self, url, name): ##保存图片print('开始请求图片地址,过程会有点长...')img = self.request(url)file_name = name + '.jpg'print('开始保存图片')f = open(file_name, 'ab')f.write(img.content)print(file_name,'图片保存成功!')f.close()def save_png(self, url, name): ##保存图片print('开始请求图片地址,过程会有点长...')img = self.request(url)file_name = name + '.png'print('开始保存图片')f = open(file_name, 'ab')f.write(img.content)print(file_name,'图片保存成功!')f.close()def mkdir(self, path):  ##这个函数创建文件夹path = path.strip()isExists = os.path.exists(path)if not isExists:print('创建名字叫做', path, '的文件夹')os.makedirs(path)print('创建成功!')else:print(path, '文件夹已经存在了,不再创建')a = TuKuSpider()
a.get_img_url()

这个是针对千图网里面,搜索“街拍”弹出的结果进行一个爬虫编写。纯粹是为了练习,只爬15张图没什么必要写爬虫,手动都下载完了。

下面写一下这个爬虫的一些关键点:

一、图片URL所在位置:包含在属性class是lazy的IMG标签内,data-original内。

二、图片的URL需要进行文本处理,有些需要,有些不需要,要写个if判断。

三、图片保存的时候,在命名时要注意,后缀除了JPG以外,还有PNG,我的处理是加多了一个保存PNG的类。

踩的一些坑:

一、逻辑主体里面,有时在sublime text复制来复制去的时候,前面没有了空格,python会报错,只有前面是实线时,才是正确的,圆点是会报错的。

二、URL必须带“http://”不然requests无法识别,或者文本处理后的URL有误,都会报错:requests.exceptions.MissingSchema: Invalid URL

转载于:https://www.cnblogs.com/10sxluo/p/10251297.html

千图网爬图片(BeautifulSoup)相关推荐

  1. 网络爬虫---从千图网爬取图片到本地

    #图片爬虫,从千图网爬取图片到本地 import urllib.request import re import urllib.error for i in range(1,10):     page ...

  2. 千图网免费下载工具(windows版)

    软件简介: 对于很对喜欢找图片的朋友都知道千图网吧,不知道得朋友就百度吧.软件来源于网络,低调使用. 下载地址: 地址: https://pan.baidu.com/s/1dy6ZwOscqhbS53 ...

  3. 【python--爬虫】千图网高清背景图片爬虫

    最近有读者反映想要下载千图网的高清背景图片,但是需要会员才能下载,而且需要的量非常大,问博主有没有办法能免费下载这些图片. 付费,不存在的o( ̄▽ ̄)o!,博主今天讲解如何通过python爬取千图网的 ...

  4. 【python--爬虫】千图网高清背景图片

    爬取的网页是:千图网背景图片模块 查看背景图片的网页代码(右键–>[查看元素]/f12 / fn + f12) url链接[www.58pic.com/newpic/33945157.html] ...

  5. Python数据爬虫学习笔记(11)爬取千图网图片数据

    需求:在千图网http://www.58pic.com中的某一板块中,将一定页数的高清图片素材爬取到一个指定的文件夹中. 分析:以数码电器板块为例 1.查看该板块的每一页的URL: 注意到第一页是&q ...

  6. python爬取千图网图片并保存_Python数据分析与挖掘实战-课程作业5爬取千图网某个频道的高清图片...

    作业要求:爬取千图网(http://www.58pic.com)某个频道的高清图片 作业难点:正确找到图片链接并用正则表达式写出 代码如下: """ Created on ...

  7. python爬千图网高清图片

    代码如下: import urllib.request import re for i in range(1,2):url = "http://www.58pic.com/piccate/7 ...

  8. 爬虫第二弹:千图网电商淘宝模板图片下载

    爬虫第二弹:千图网电商淘宝模板图片下载  一.功能分析: 1.下载千图网电商淘宝的所有模板图片要求是高清版本: 2.并按照主页面将图片归类文件夹.   二.思路分析: 1.利用scrapy构建scra ...

  9. requests库(正则提取)爬取千图网

    requests库(正则提取)爬取千图网 首先分析网页结构 打开千图网的网址搜索春节 打开网页源代码,发现跳转链接存在网页源代码里 接下来我们就利用正则表达式去提取 正则表达式最主要的就是找到你想要信 ...

最新文章

  1. redis desktop manager 连接外网redis服务器
  2. MySQL isnull()函数基本指南
  3. 回归分析检验_回归分析
  4. 腾讯视频怎么上传自己的视频?
  5. ES6更新的3种精简化代码,(1.速写属性 2.速写方法 3.模板字符串)
  6. 利用Javacsv实现Java读写csv文件
  7. mysql驱动和url在5.7以上版本变化
  8. 工程项目成本费用明细表_项目成本费用明细表
  9. nginx配置lua脚本
  10. 百度网盘加速教程(绝对有效)
  11. vi/vim显示行号
  12. 思考犹太家庭如何教育出这么多精英及富豪
  13. MySQL 8.0 全文检索功能 根据中文字符检索相关数据
  14. 高效遍历HashMap的方式,你知道的有几种呢
  15. js如何实现数组数据的上移下移
  16. R语言入门(学习笔记)
  17. 如何注册Atlassian账户
  18. cJSON库如何在KIEL4上使用?
  19. 何处寻找B2C电子商务的蓝海?
  20. 15、Python的元组类型

热门文章

  1. oracle 如何修改表空间,ORACLE修改表空间方法
  2. 青山绿水 峡谷奇观---野三坡之行(转)
  3. 计算机网络复习-第六章应用层
  4. 5.11 按照文字的笔划进行数据的排序 [原创Excel教程]
  5. docker重启参数--restart=always的作用
  6. 麒麟Linux启动目录,Ubuntu Kylin优麒麟文件管理器篇:介绍,类别,结构,文件系统目录,使用...
  7. Gartner:2018年前沿技术预测
  8. iphone 自定义铃声制作
  9. 知乎页面的html代码,Web前端
  10. android手机连接esp32视频