Python超简单的爬取网站中图片
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超简单的爬取网站中图片的更多相关文章
- 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...
- python 爬虫入门----案例爬取上海租房图片
前言 对于一个net开发这爬虫真真的以前没有写过.这段时间学习python爬虫,今天周末无聊写了一段代码爬取上海租房图片,其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup. ...
- 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scr ...
- 【Python】简单实现爬取小说《天龙八部》,并在页面本地访问
背景 很多人说学习爬虫是提升自己的一个非常好的方法,所以有了第一次使用爬虫,水平有限,依葫芦画瓢,主要作为学习的记录. 思路 使用python的requests模块获取页面信息 通过re模块(正则表达 ...
- 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】
[写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...
- [python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈
我自认为这是自己写过博客中一篇比较优秀的文章,同时也是在深夜凌晨2点满怀着激情和愉悦之心完成的.首先通过这篇文章,你能学到以下几点: 1.可以了解Python简单爬取图片的一些思路和方法 ...
- python爬虫简单代码爬取郭德纲单口相声
搜索老郭的单口相声,打开检查模式,刷新 没有什么有价值的东东, 不过....清掉内容, 点击一个相声,再看看有些什么 是不是发现了些什么 我们来点击这个看看, 首先看一下headers, 这个url是 ...
- HttpClient爬取网站及图片
1.什么是HttpClient? HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 ...
- 一个自定义python分布式专用爬虫框架。支持断点爬取和确保消息100%不丢失,哪怕是在爬取进行中随意关停和随意对电脑断电。
0.此框架只能用于爬虫,由框架来调度url请求,必须按照此方式开发,没有做到类似celery的通用分布式功能,也不方便测试.可以使用另外一个,基于函数式编程的,调度一切函数的分布式框架,做到了兼容任何 ...
随机推荐
- numpy---python数据分析
最后大图可点开保存 文章目录 最后大图可点开保存 学习目标 3.1.1Numpy介绍 3.1.2 ndarray介绍 3.1.3 ndarray与Python原生list运算效率对比 3.1.4 nd ...
- python手册学习笔记1
笔记1 > http://www.pythondoc.com/pythontutorial3/controlflow.html 参数传递 Python中sys.argv的用法 调用解释器时,脚本 ...
- Prometheus客户端开发:腾讯云CLB
一:简介 随着prometheus的使用人群逐渐扩大,官方定义的client exporter虽然能满足我们的大部分需求,但是很多监控还是需要我们自定义开发,以下内容就是基于腾讯云SDK,对腾讯云CL ...
- css的块级元素和行级元素
块级元素 概念: 每个块级元素都是独自占一行. 元素的高度.宽度.行高和边距都是可以设置的. 元素的宽度如果不设置的话,默认为父元素的宽度(父元素宽度100%) <address>/ ...
- 数据分析之路 第一篇 numpy
第一篇 numpy 1.N维数组对象 :ndarray在Python中既然有了列表类型,为啥还要整个数组对象(类型)?那是因为:1.数组对象可以除去元素间运算所需要的循环,使得一维向量更像单个数据2. ...
- hdu 1880 魔咒词典(双hash)
魔咒词典Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- ffmpeg-3.1.4居然也有这么坑的bug
近日自己用下载的ffmpeg-3.1.4代码自己编译来用,没想到会碰到这么一下低级坑.我用自己的编译出来的库总是会在用rtsp上传视频时崩掉,起初我还以为自己编译的x264出问题,因为我是绕开使用pk ...
- 在ensp上利用三层交换机实现VLAN间路由
我们在实际生活中经常要跨vlan进行通信,我们的解决办法有单臂路由,但是单臂路由存在很大的局限性,带宽,转发效率等,所以单臂路由用的就有点少,所以就有了本章节 三层交换机在原有的二层交换机的基础上,增 ...
- 万恶之源-python基本数据类型
万恶之源-基本数据类型(dict) 本节主要内容: 字典的简单介绍 字典增删改查和其他操作 3. 字典的嵌套 ⼀一. 字典的简单介绍 字典(dict)是python中唯⼀一的⼀一个映射类型.他是以{ ...
- 🔥《手把手教你》系列基础篇之4-python+ selenium自动化测试-xpath使用(详细教程)
1. 简介 俗话说:磨刀不误砍柴工,因此在我们要开始写自动化脚本之前,我们先来学习和了解几个基本概念,在完全掌握了这几个概念之后,有助于我们快速上手,如何去编写自动化测试脚本. 元素,在这个教程系列, ...