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. 11、pytest -- 测试的参数化

    目录 1. @pytest.mark.parametrize标记 1.1. empty_parameter_set_mark选项 1.2. 多个标记组合 1.3. 标记测试模块 2. pytest_g ...

  2. CAP的学习和应用

    性能优化真言:队列缓存分布式  异步调优堆配置 前言:用CAP有一段时间了,这里简单记录一下,这么好用的东西,小伙伴们赶紧上车吧 一.CAP使用场景? 平时工作中经常使用到MQ,如(kafka,rab ...

  3. 你了解MySQL中的多表联合查询吗?

    前言: 多表联合查询,其实就是我们MySQL中的join语句,经常会看到有人说join非常影响性能,不建议使用,你知道这是为什么呢?我们究竟可不可以用呢? 测试数据: CREATE TABLE `t2 ...

  4. php windows与linux下的路径区别

    php windows与linux下的路径区别windows用的是"\",linux用的是"/"这一点要特别清楚,, ps:在PHP windows也可以用/表 ...

  5. vmware centos共享文件夹

    vmware centos共享文件夹 查看VMware Tools 是否安装成功 <pre>vmware-hgfsclient</pre> 出现共享文件夹<pre> ...

  6. show语句大全

    基于本人对MySQL的使用,现将常用的MySQL show 语句列举如下: 1.show databases ; // 显示mysql中所有数据库的名称 2.show tables [from dat ...

  7. 用正则表达式获取URL中的查询参数

    总结获取url中查询参数的两种方式 通过正则表达式获取单个参数 url中的所有查询参数可以通过 window.location.search 字段获取,以字符串的形式返回.并有固定的格式 ?param ...

  8. [内部类] java笔记之内部类

    1.内部类的分类 2.成员内部类的定义格式 3.一旦使用了内部类,那么生成的class文件长啥样? 其中Body是外部类,Heart是Body的内部类,所以中间有个美元符号$,所以给类进行命名时,不要 ...

  9. Cef 因系统时间不正常,导致页面访问空白问题

    当我们的系统时间不正常,比如设置一个日期-1999年9月9日,会引发证书问题. 系统时间不正常-IE有概率能访问 触发NavigateError事件,异常代码INET_E_INVALID_CERTIF ...

  10. python:沙盒(virtualenv)

    当电脑需要使用多个版本的python时,可以使用沙盒:或者使用docker: virtualenv是Python自带的,通过pip安装的 [root@centos7 public]# cd jinji ...