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小技巧之批量抓取美女图片
Jun 06 Python
Python 内置函数memoryview(obj)的具体用法
Nov 23 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
python实现多进程代码示例
Oct 31 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
Python变量类型知识点总结
Feb 18 Python
Python接口测试结果集实现封装比较
May 01 Python
Django后端分离 使用element-ui文件上传方式
Jul 12 Python
有关pycharm登录github时有的时候会报错connection reset的问题
Sep 15 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 Python
python图片合成的示例
Nov 09 Python
python 实现的车牌识别项目
Jan 25 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
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
jQuery 使用手册(一)
2009/09/23 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
2013/07/08 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
CSS图片翻转动画技术详解(IE也实现了)
2014/04/03 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
艺术专业大学生自我评价
2013/09/22 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
爱情保证书
2015/01/17 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书
导游词之阆中古城
2019/12/23 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript