欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

三十行代码教你批量爬取某网站妹纸图

程序员文章站 2022-03-27 21:05:56
三十行代码教你批量爬取某网站妹纸图并保存在指定目录,代码极简单,速入~...

写在前面

  晚上逛B站的时候,看到这个视频,我啪的一下就点进去了,很快啊。于是重新复现了功能并做了些小优化,今天分享给大家。还是老规矩在文末会附上完整代码,需要的小伙伴自取就好了,能帮助到你的话别忘了点赞关注喔~

  郑重声明:本人目前仅在CSDN这一个平台发布文章,其他小伙伴如果想转载 或者引用请注明引用来源,未经许可不得直接搬运,请尊重创作人的劳动成果,谢谢!

三十行代码教你批量爬取某网站妹纸图

一、需求分析

  爬取网站的小姐姐图片,并保存在指定目录

  网站链接: https://www.vmgirls.com/13344.html

效果图如下:

三十行代码教你批量爬取某网站妹纸图

二、编程思路

  在爬取网页时首先要的就是对网页进行分析,这里我主要需要的是两个部分,一个是这组图的名称,用来做文件名;另一个是图片链接,用来下载图片。

通过对源码观察我发现组图的名称在这个<h1>的标签里<h1 class="post-title h1">少女情怀总是诗</h1>,图片链接的话在这个<a>标签中<a href="//static.vmgirls.com/image/2019/12/2019122210292813-scaled.jpeg" alt="少女情怀总是诗" title="少女情怀总是诗"><img alt="少女情怀总是诗-唯美女生" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="//static.vmgirls.com/image/2019/12/2019122210292813-scaled.jpeg" data-nclazyload=true data-pagespeed-lsc-url="https://static.vmgirls.com/image/2019/12/2019122210292813-scaled.jpeg"></a>好了找到要爬取内容的所在地之后那么就很简单了,因为我比较擅长re库,所以这里用正则表达式来进行网页解析,完整代码在下边给出。

三、完整代码

import requests
import re
import time
import os

#获取网页
kv = {'user-agent':'Mozilla/5.0'}
response = requests.get("https://www.vmgirls.com/13344.html" , headers = kv)
html = response.text

#解析网页
dir_name = re.findall('<h1 class="post-title h1">(.*?)</h1>',html)[-1] #作为文件名
if not os.path.exists(dir_name):
    os.mkdir(dir_name)

urls = re.findall('<a href="(.*?)" alt="少女情怀总是诗".*?</a>',html)
#print(urls)

#保存图片到指定文件
num = 1
for url in urls:
    time.sleep(1) #设置爬取时间间隔为1s
    #定义图片的名字
    file_name = url.split('/')[-1]
    response = requests.get('https:' + url , headers = kv) #制定并获取图片链接
    with open(dir_name + '/' + file_name,'wb') as f:
        f.write(response.content) #因为图片是二进制所以用content写入
    print("正在爬取第%d张图片"%(num))
    num = num + 1

f.close()
print("爬取完毕")

  然后就可以看到一张张图片被下载到本地啦,还在等什么,赶紧试试吧~

三十行代码教你批量爬取某网站妹纸图

引用源自

B站Python学习者 链接:https://www.bilibili.com/video/BV1qJ411S7F6

  本篇完,如有错误欢迎指出~

本文地址:https://blog.csdn.net/weixin_44578172/article/details/110359635