前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫实例二:哔哩哔哩专栏--鬼灭之刃图片

爬虫实例二:哔哩哔哩专栏--鬼灭之刃图片

原创
作者头像
远方的星
修改2023-09-24 19:05:21
1.1K0
修改2023-09-24 19:05:21
举报

section1:声明

1、所爬取的图片均为能在哔哩哔哩平台免费下载的图片。 2、自己的学习笔记,不会商用,我自己爬取了2个g的图片后,选了几张作为备用壁纸后,已全部删除。 3、本文如有侵权,可联系我删除文章。

section2:下载链接分析

由于B站专栏很多,我进行搜索了一下,选择“鬼灭之刃弥豆子壁纸”,然后总共有4页,本文只爬取第一页内容。 效果图如下:

首先,找到我们想要爬取的详情页 鬼灭之刃弥豆子壁纸

然后进行源代码分析: (以第一篇文章为例)

找到href标签处的超链接,点击查看一下

是我们想要的文章。但是爬取的时候需要和“https:”组合一下。

接着对文章中出现的图片进行源代码分析: (以第一张图片为例)

每一个figure标签,含有一张图片的URL。那么提取处data-src的内容即可。(但实际上并不是,用代码获取文本的时候,是没有这个内容的,后面可以看一下)

section3:代码

代码语言:python
复制
import requests
import re
import bs4
import os

headers = {
     'user - agent': 'Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 80.0.3987.116Safari / 537.36'
}

#创建文件夹
if not os.path.exists('D:/鬼灭之刃'):
    os.mkdir('D:/鬼灭之刃')

def get_first_url(url):       #得到第一个url,即每一篇文章的url,结果是未遍历的
    res_1=requests.get(url=url,headers=headers)
    html_1=res_1.text
    first_url=re.findall('<li.*?<a.*?"(//w.*?search)"',html_1,re.S)
    return first_url

def get_second_url(url):   #得到第二个url,即文章中每个图片的url,结果是未遍历的
    res_2 = requests.get(url=url,headers=headers)
    html_2=res_2.text
    soup=bs4.BeautifulSoup(html_2,'html.parser')
    picture_list = soup.select('.img-box img')
    return picture_list

def download_picture(url,num1,i):   #下载图片
    res_3=requests.get(url=url,headers=headers)
    picture_data=res_3.content
    picture_name='img{}_{}.jpg'.format(num1,i)
    picture_path='D:/鬼灭之刃/'+picture_name
    with open(picture_path,'wb') as f:
        f.write(picture_data)
        print(picture_path,'打印成功')


def main():
    base_url='https://search.bilibili.com/article?keyword=%E9%AC%BC%E7%81%AD%E4%B9%8B%E5%88%83%E5%BC%A5%E8%B1%86%E5%AD%90%E5%A3%81%E7%BA%B8'
    fist_urls=get_first_url(base_url)
    num1=1
    for first_url in fist_urls:
        first_url='https:'+first_url
        second_url=get_second_url(first_url)
        for i in range(len(second_url)):
            picture_urls=second_url[i].get('data-src')
            picture_url='https:'+picture_urls
            download_picture(picture_url,num1,i)
        num1+=1


if __name__ =='__main__'    :
    main()

section4:补充

到这里,文本就接近尾声啦,下面来看一下,上面留下来的那个小问题。

这个是解析出来的结果

仔细看一下是有区别的嗷,还是要以解析出来的结果为准嗷。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • section1:声明
  • section2:下载链接分析
  • section3:代码
  • section4:补充
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档