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的通用分布式功能,也不方便测试.可以使用另外一个,基于函数式编程的,调度一切函数的分布式框架,做到了兼容任何 ...
随机推荐
- python Tesseract安装方法
python Tesseract安装方法 EXE可执行文件地址:http://download.csdn.net/download/whatday/7740469:下载tesseract-ocr-se ...
- kubernetes 控制器详解【持续完善中】
目录 资源创建详解 一:Pod及常用参数 1.简介 2.模板 3.删除pod 4.设置Pod主机名 5.镜像拉取策略(ImagePullPolicy) 二:RC 1.简介 2.模板 三:Deploym ...
- 7月22 Linux作业-文件管理
习题内容 解答 1.答案 [root@centos7 ~]# echo '*/1 * * * * /usr/bin/cp /etc /data/`/usr/bin/date +\%Y-\%m-\%d` ...
- (十七)golang--闭包(简单明了)
所谓闭包:就是一个函数和其相关的引用环境组合的一个整体: 首先,有如下一个小例子,最终的输出结果是什么呢?是输出11,12吗? 对上述代码说明:(1)addUpper是一个函数,返回的是func(in ...
- 🔥「课代表」帮你总结了全网最全的Redis知识点
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图.个人联系方式和人才交流群,欢迎Star和指教 ...
- pat 1035 Password(20 分)
1035 Password(20 分) To prepare for PAT, the judge sometimes has to generate random passwords for the ...
- hdu 1907 John (尼姆博弈)
John Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- ThreadLocal深度解析和应用示例
开篇明意 ThreadLocal是JDK包提供的线程本地变量,如果创建了ThreadLocal<T>变量,那么访问这个变量的每个线程都会有这个变量的一个副本,在实际多线程操作的时候,操作的 ...
- Redis的内存淘汰策略
Redis占用内存大小 我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小. 1.通过配置文件配置 ...
- Python自动化办公之操作Excel文件
模块导入 import openpyxl 读取Excel文件 打开Excel文件 workbook = openpyxl.load_workbook("test.xlsx") 输出 ...