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 登录网站详解及实例
Apr 11 Python
python opencv实现运动检测
Jul 10 Python
Python常见内置高效率函数用法示例
Jul 31 Python
Python操作rabbitMQ的示例代码
Mar 19 Python
使用Python画股票的K线图的方法步骤
Jun 28 Python
Django REST framework内置路由用法
Jul 26 Python
python 普通克里金(Kriging)法的实现
Dec 19 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
python 实现多维数组(array)排序
Feb 28 Python
Python实现Wordcloud生成词云图的示例
Mar 30 Python
详解Selenium 元素定位和WebDriver常用方法
Dec 04 Python
详解python 条件语句和while循环的实例代码
Dec 28 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
bootstrap Table服务端处理分页(后台是.net)
2017/10/19 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
Python过滤txt文件内重复内容的方法
2018/10/21 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
股权投资意向书
2014/04/01 职场文书
亲子活动总结
2014/04/26 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
关于迟到的检讨书
2015/05/06 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python
聊聊JS ES6中的解构
2021/04/29 Javascript
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL
MongoDB使用场景总结
2022/02/24 MongoDB
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript