python爬取图片-Python超简单的爬取网站中图片

1、首先导入相关库

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

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

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

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

importbs4importrequestsimportos

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代表的是标签 class是标签中所对应的class TypeBigPics为标签中class中对应的值,根据class中的值找出对应图片的标签

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

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

imgObj=[] #用于存储img对象for s inobj:

imgObj.append(s.find("img")) #把取出的img对象存入imgObj数组中

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

srcObj=[] #用于存储图片src对象for o inimgObj:

srcObj.append(o.get("src"))

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

6、下载图片

for img insrcObj:

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、全部代码如下

importbs4importrequestsimportos

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 inobj:

objHtml.append(s.find("img"))for o inobjHtml:

objImg.append(o.get("src"))for img inobjImg:

with open("D:\pics22223\"+os.path.basename(img),'wb') as f:

f.write(requests.get(img).content)print(os.path.basename(img)+"保存成功");

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

这里就直接上源码了

importbs4importrequestsimportos

import threadingdefojue(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 inobj:

objHtml.append(f.get("href"))for z inobjHtml:

htmlText=bs4.BeautifulSoup(requests.get(z).text)

Img= htmlText.find_all("img")for c inImg:

ImgObj.append(c.get("src"))for img inImgObj:

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 参数是对应的函数名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值