Python 爬虫图片简单实现


Posted in Python onJune 01, 2017

Python 爬虫图片简单实现

经常在逛知乎,有时候希望把一些问题的图片集中保存起来。于是就有了这个程序。这是一个非常简单的图片爬虫程序,只能爬取已经刷出来的部分的图片。由于对这一部分内容不太熟悉,所以只是简单说几句然后记录代码,不做过多的讲解。感兴趣的可以直接拿去用。亲测对于知乎等网站是可用的。

上一篇分享了通过url打开图片的方法,目的就是先看看爬取到的图片时什么样,然后再筛选一下保存。

这里用到了requests库来获取页面信息,需要注意的是,获取页面信息的时候需要一个header,用以把程序伪装成浏览器去访问服务器,不然可能会被服务器拒绝。然后用BeautifulSoup来过滤多余信息得到图片地址。得到图片后,根据图片的大小过滤掉一些头像、表情包之类的小图片。最后打开或者保存图片的时候选择就比较多了,OpenCV,skimage,PIL等都可以。

程序如下:

# -*- coding=utf-8 -*-
import requests as req
from bs4 import BeautifulSoup
from PIL import Image
from io import BytesIO
import os
from skimage import io

url = "https://www.zhihu.com/question/37787176"
headers = {'User-Agent' : 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Mobile Safari/537.36'}
response = req.get(url,headers=headers)
content = str(response.content)
#print content

soup = BeautifulSoup(content,'lxml')
images = soup.find_all('img')
print u"共有%d张图片" % len(images)

if not os.path.exists("images"):
  os.mkdir("images")

for i in range(len(images)):
  img = images[i]
  print u"正在处理第%d张图片..." % (i+1)
  img_src = img.get('src')
  if img_src.startswith("http"):
    ## use PIL
    '''
    print img_src
    response = req.get(img_src,headers=headers)
    image = Image.open(BytesIO(response.content))
    w,h = image.size
    print w,h
    img_path = "images/" + str(i+1) + ".jpg"
    if w>=500 and h>500:
      #image.show()
      image.save(img_path)

    '''

    ## use OpenCV
    import numpy as np
    import urllib
    import cv2

    resp = urllib.urlopen(img_src)

    image = np.asarray(bytearray(resp.read()), dtype="uint8")
    image = cv2.imdecode(image, cv2.IMREAD_COLOR)
    w,h = image.shape[:2]
    print w,h
    img_path = "images/" + str(i+1) + ".jpg"
    if w>=400 and h>400:
      cv2.imshow("Image", image)
      cv2.waitKey(3000)
      ##cv2.imwrite(img_path,image)

    ## use skimage

    ## image = io.imread(img_src)
    ## w,h = image.shape[:2]
    ## print w,h
    #io.imshow(image)
    #io.show()

    ## img_path = "images/" + str(i+1) + ".jpg"
    ## if w>=500 and h>500:
      ## image.show()
      ## image.save(img_path)
      ## io.imsave(img_path,image)

print u"处理完成!"

这里给出了多种选择,供参考。

Python 相关文章推荐
python算法学习之桶排序算法实例(分块排序)
Dec 18 Python
Python的randrange()方法使用教程
May 15 Python
Python之re操作方法(详解)
Jun 14 Python
python ansible服务及剧本编写
Dec 29 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
Pandas分组与排序的实现
Jul 23 Python
解决python flask中config配置管理的问题
Jul 26 Python
Python Subprocess模块原理及实例
Aug 26 Python
python中的TCP(传输控制协议)用法实例分析
Nov 15 Python
Python切片列表字符串如何实现切换
Aug 06 Python
python 基于wx实现音乐播放
Nov 24 Python
手残删除python之后的补救方法
Jun 26 Python
Python 通过URL打开图片实例详解
Jun 01 #Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 #Python
python 内置函数filter
Jun 01 #Python
python读取二进制mnist实例详解
May 31 #Python
Python算术运算符实例详解
May 31 #Python
Python简单的制作图片验证码实例
May 31 #Python
详解python的webrtc库实现语音端点检测
May 31 #Python
You might like
构建简单的Webmail系统
2006/10/09 PHP
php中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
jquery 分页控件实现代码
2009/11/30 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
python实现html转ubb代码(html2ubb)
2014/07/03 Python
python的dict,set,list,tuple应用详解
2014/07/24 Python
Python连接mysql数据库的正确姿势
2016/02/03 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
Python如何获取文件路径/目录
2020/09/22 Python
python mock测试的示例
2020/10/19 Python
python实现磁盘日志清理的示例
2020/11/05 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
电脑销售顾问自荐信
2014/01/29 职场文书
电大本科自我鉴定
2014/02/05 职场文书
事务机电主管工作职责
2014/02/25 职场文书
2014社区三八妇女节活动总结
2014/03/01 职场文书
四年级评语大全
2014/04/21 职场文书
高效课堂标语
2014/06/26 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
2015年教研工作总结
2015/05/23 职场文书
地道战观后感2000字
2015/06/04 职场文书
大学学习委员竞选稿
2015/11/20 职场文书