1、首先导入相关库

import requests
import bs4
import threading #用于多线程爬虫,爬取速度快,可以完成多页爬取
import os

2、使用bs4获取html中的内容

所爬取的网站:http://www.umei.cc/bizhitupian/diannaobizhi/1.htm    这只是第一页中的图片当然可以批量爬取里面所有的图片

bs = bs4.BeautifulSoup(requests.get(r"http://www.umei.cc/bizhitupian/diannaobizhi/1.htm").text)

到这一步我们就已经拿到了该页面的HTML了,发现输出的HTML有点乱码,这时我们可以改良一下我们的代码

import bs4
import requests
import os
req = requests.get(r"http://www.umei.cc/bizhitupian/diannaobizhi/1.htm")
req.encoding="utf-8"
bs = bs4.BeautifulSoup(req.text)

这样可以解决爬取出来的HTML乱码的问题

3、拿到HTML后就进行匹配我们所需要的图片标签

obj = bs.find_all("a",{"class":{"TypeBigPics"}}) #a代表的是<a>标签 class是<a>标签中所对应的class  TypeBigPics为<a>标签中class中对应的值,根据class中的值找出对应图片的<a>标签

这时就拿到了图片所对应的所有的<a>标签 find_all()取去出所有匹配的对象,find()则是取出一条

4、接着取出<a>标签里面的所有img标签

imgObj=[] #用于存储img对象
for s in obj:
imgObj.append(s.find("img")) #把取出的img对象存入imgObj数组中

5、接着获取img标签中src中的值

srcObj=[] #用于存储图片src对象for o in imgObj:
srcObj.append(o.get("src"))

这时我们就得到了网页上所有图片的文件路径,下一步就可以进行下载这些图片了

6、下载图片

for img in srcObj:
with open("D:\\Images\\"+os.path.basename(img),'wb') as f:
f.write(requests.get(img).content)
print(os.path.basename(img)+"保存成功")

srcObj为上面所拿到的图片地址,D:\\Images\\为本地保存目录     注意:要用双斜杠     os.path.basename(img)为图片原文件名 也可替换成自己设置文件名   到这里简单的爬虫就已经结束了

7、全部代码如下

import bs4
import requests
import os
req = requests.get(r"http://www.umei.cc/bizhitupian/diannaobizhi/1.htm")
req.encoding="utf-8"
bs = bs4.BeautifulSoup(req.text)
obj = bs.find_all("a",{"class":{"TypeBigPics"}})
objHtml=[]
objImg=[]
for s in obj:
objHtml.append(s.find("img"))
for o in objHtml:
objImg.append(o.get("src"))
for img in objImg:
with open("D:\\pics22223\\"+os.path.basename(img),'wb') as f:
f.write(requests.get(img).content)
print(os.path.basename(img)+"保存成功");

8、使用多线程爬取此站所有的图片

这里就直接上源码了

import bs4
import requests
import os
import threading
def ojue(i):
bs = bs4.BeautifulSoup(requests.get(r"http://www.umei.cc/bizhitupian/diannaobizhi/"+i+".htm").text)
obj = bs.find_all("a",{"class":{"TypeBigPics"}})
objHtml=[]
ImgObj=[]
for f in obj:
objHtml.append(f.get("href"))
for z in objHtml:
htmlText = bs4.BeautifulSoup(requests.get(z).text)
Img = htmlText.find_all("img")
for c in Img:
ImgObj.append(c.get("src"))
for img in ImgObj:
with open("D:\\pics22223\\"+os.path.basename(img),'wb') as f:
f.write(requests.get(img).content)
print(os.path.basename(img)+"保存成功") for i in range(627): #range()从0开始取到627
threading.Thread(target=ojue,args=(i+1,)).start() #target 参数是对应的函数名称

Python超简单的爬取网站中图片的更多相关文章

  1. 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...

  2. python 爬虫入门----案例爬取上海租房图片

    前言 对于一个net开发这爬虫真真的以前没有写过.这段时间学习python爬虫,今天周末无聊写了一段代码爬取上海租房图片,其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup. ...

  3. 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scr ...

  4. 【Python】简单实现爬取小说《天龙八部》,并在页面本地访问

    背景 很多人说学习爬虫是提升自己的一个非常好的方法,所以有了第一次使用爬虫,水平有限,依葫芦画瓢,主要作为学习的记录. 思路 使用python的requests模块获取页面信息 通过re模块(正则表达 ...

  5. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  6. [python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈

    我自认为这是自己写过博客中一篇比较优秀的文章,同时也是在深夜凌晨2点满怀着激情和愉悦之心完成的.首先通过这篇文章,你能学到以下几点:        1.可以了解Python简单爬取图片的一些思路和方法 ...

  7. python爬虫简单代码爬取郭德纲单口相声

    搜索老郭的单口相声,打开检查模式,刷新 没有什么有价值的东东, 不过....清掉内容, 点击一个相声,再看看有些什么 是不是发现了些什么 我们来点击这个看看, 首先看一下headers, 这个url是 ...

  8. HttpClient爬取网站及图片

    1.什么是HttpClient? HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 ...

  9. 一个自定义python分布式专用爬虫框架。支持断点爬取和确保消息100%不丢失,哪怕是在爬取进行中随意关停和随意对电脑断电。

    0.此框架只能用于爬虫,由框架来调度url请求,必须按照此方式开发,没有做到类似celery的通用分布式功能,也不方便测试.可以使用另外一个,基于函数式编程的,调度一切函数的分布式框架,做到了兼容任何 ...

随机推荐

  1. 通过ISO镜像简单搭建本地yum仓库

    本文参考链接:https://segmentfault.com/a/1190000015155966 *有时候在我们本地搭建一些Linux上的程序运行环境或者安装一些软件的时候,难免会遇到需要使用yu ...

  2. SpringBoot 源码解析 (一)----- SpringBoot核心原理入门

    Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for building all Sp ...

  3. JS 暴虐算法查找

      @dd|ad|fds|d@dd|ad|fds|d@dd|ad|fds|d@   var e = [];     window.onload = function () {         var ...

  4. 利用爬虫爬取LOL官网上皮肤图片

    今天在浏览网页时,看到一篇很有意思的文章,关于网络爬虫的.该文章是讲述如何利用request爬取英雄联盟官网皮肤图片.看过文章后觉得挺有用的,把代码拿过来运行了一下,果真爬取成功.下面给大家分享一下代 ...

  5. 深入理解java继承从“我爸是李刚”讲起

    目录 1.继承的概述 2.关于继承之后的成员变量 3.关于继承之后的成员方法 4.关于继承之后的构造方法 5.关于继承的多态性支持的例子 6.super与this的用法 前言 本文主要多方面讲解jav ...

  6. RHEL7-Vsftpd匿名用户

    实现:匿名用户创建目录,可以上传.下载文件,但是不可删除文件,禁止本地用户登陆. Vsftpd.conf部分参数 第一步:虚拟机挂载镜像 略 第二步:执行挂载命令 略 第三步:编写yum仓库文件 略 ...

  7. 深入理解计算机系统 第二章 信息的表示和处理 Part2 第二遍

    <深入理解计算机系统> 第三版 第二遍读这本书,每周花两到三小时时间,能读多少读多少(这次看了 29 ~ 34 页) 第一遍对应笔记链接 https://www.cnblogs.com/s ...

  8. 从最近面试聊聊我所感受的.net天花板

    #0 前言 入职新公司没多久,闲来无事在博客园闲逛,看到园友分享的面试经历,正好自己这段时间面试找工作,也挺多感想的,干脆趁这个机会总结整理一下.博主13年开始实习,14年毕业.到现在也工作五六年了. ...

  9. 使用不同的C++支持库的模块混合开发时,引发异常展开不正常,抛异常竟引出一个SIGSEGV

    如果你使用gcc对一部分模块进行了GNUMake的编译,这些编译出动态库使用在Gradle编译框架下的项目.那么就有可能出现题目中的情况,使用不同的C++支持库的模块混合开发时,引发异常展开不正常. ...

  10. gRPC asp.net core自定义策略认证

    在GitHub上有个项目,本来是作为自己研究学习.net core的Demo,没想到很多同学在看,还给了很多星,所以觉得应该升成3.0,整理一下,写成博分享给学习.net core的同学们. 项目名称 ...