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

上一篇分享了通过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 iourl = "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 contentsoup = 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_srcresponse = req.get(img_src,headers=headers)image = Image.open(BytesIO(response.content))w,h = image.sizeprint w,himg_path = "images/" + str(i+1) + ".jpg"if w>=500 and h>500:#image.show()image.save(img_path)'''## use OpenCVimport numpy as npimport urllibimport cv2resp = 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,himg_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"处理完成!"

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


公众号CVPy,分享OpenCV和Python的实战内容。每一篇都会放出完整的代码。欢迎关注。

Python简单图片爬虫相关推荐

  1. python简单网站爬虫-爬取北京7天最高、最低气温

    python简单网站爬虫-爬取北京7天最高.最低气温 前置操作: 1.待爬取网站: 北京天气的网址: http://www.weather.com.cn/weather1d/101010100.sht ...

  2. python如何爬取图片到指定文件夹论文_基于Python的图片爬虫程序设计

    互联网中包含大量有价值的 数据,网络爬虫通过既定规则可 以自动地抓取互联网数据并下载 至本地存储.研究网络爬虫的工 作原理和基于 Python 网络信息爬 取技术模块功能,基于 Requests- B ...

  3. Python 简单网页爬虫学习

    1 #coding=utf-8 2 3 # 参考文章: 4 # 1. python实现简单爬虫功能 5 # http://www.cnblogs.com/fnng/p/3576154.html 6 # ...

  4. python简单的爬虫教程中召唤小海龟_Python练习,网络小爬虫(初级)

    标签: 最近还在看Python版的rcnn代码,附带练习Python编程写一个小的网络爬虫程序. 抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的.比如说你在浏览器的地址栏中输入   ...

  5. python简单网络爬虫_【Python】简单的网络爬虫

    完整代码 # encoding:UTF-8 # from bs4 import BeautifulSoup import urlparse import urllib2 import re impor ...

  6. python简单图片识别_用Python进行简单的图片识别(1)

    起因是这样的,我想买一个定焦镜头,但也不是必需品,可以长期观望购买.最初的想法是,写个程序,每天爬一下各大电商网站的价格,或者直接爬etao把该镜头的价格记录下来,突然有一个惊爆的低价,就发邮件通知. ...

  7. python 微博图片爬虫 不用cookie

    Python 爬取微博图片,no cookie   想爬微博的某个用户的的图片,不使用cookie.代码如下.使用方法很简单,拿来可用.整个代码需要修改的就是id,如何找到目标用户的id呢?两个方法: ...

  8. python简单图片对比

    # -*- coding: utf-8 -*- import cv2,os import time import numpy as np from matplotlib import pyplot a ...

  9. python简单的爬虫教程中召唤小海龟_Python爬虫入门小练习之简单的50行(一)

    HI 最近得空,小看了一下python爬虫方面的资料,于是就打算把笔记和代码练习整理成文章分享给大家. 一.先来认识一下啥玩意叫爬虫吧 爬虫的目的:数据 1.企业内部数据 由企业内部服务器产生的数据 ...

最新文章

  1. TypeError: the JSON object must be str, bytes or bytearray, not dict
  2. Android自定义spinner下拉框实现的实现
  3. v-bind 中a标签的使用
  4. C++语言基础 例程 文本文件的读写
  5. 《代码大全2》读书笔记(七)
  6. javascript学习系列(23):数组中的解构方法
  7. HTML5编写船上航行,单体半滑行穿浪船船型与静水航行性能
  8. 学习——AQS工作原理分析
  9. VBA select case
  10. winsdk仿win7扫雷
  11. echarts 生成 迁徙图_echarts3 迁徙图 迁入迁出
  12. sipp basic call 脚本
  13. 微信分享至朋友圈和朋友接口
  14. 一些又用的国内著名期刊
  15. 2015中国国内元器件分销商10亿俱乐部20强榜单
  16. md5加密依赖工具utility使用小记
  17. JavaScript实现购物车计算价格功能
  18. Python学习记录 - matplotlib绘制电影票房条形图
  19. 富文本编辑器 wangeditor、Dialog中使用wangeditor、多次生成wangeditor实例
  20. shellcode免杀;CS上线;获取微信聊天记录

热门文章

  1. 自适应设计涉及的知识点(CSS像素、物理像素、逻辑像素、设备像素比、PPI、Viewport)
  2. 全国行政区划代码(json对象)---只包含城市代号和城市名称的json对象代码(包括县级市)
  3. wkhtmltox实现网页转换成图片或pdf
  4. 二狗子翻车了,只因上了这个网站……
  5. 微服务和分布式的概念和区别
  6. LNK2005 LNK1169
  7. 前端转战JAVA——1114(集合遍历)
  8. 代码实现任意维度矩阵求逆(C语言 用伴随矩阵实现)
  9. 顺德美食攻略###打假###
  10. Zbit ZB25VQ16ASIG 16M flash