给所有女生科普一下,每个奥特曼都是都一样的。

 

前言

    今天刷到一个街头采访类的视频吧,就是问了十几个女生,居然说奥特曼不都是迪迦吗?不都是长的一个样吗?可能就和我们男生觉得口红颜色一样是一个道理,但是那区别这么大,这么明显,怎么可能是长一样呢?

给所有女生科普一下,每个奥特曼都是都一样的。_第1张图片

这是一样吗?这明显每个人的衣服或者脸型或者头上的脚这也能叫一样?所以今天特意写了个爬虫,给广大女性朋友科普一下每个奥特曼都叫啥!

主要引包

import os
from pathlib import Path
from bs4 import BeautifulSoup
from requests import Session
  • os模块在这里的功能就是判断路径是否存在的
  • pathlib模块主要是获取路径用的
  • BeautifulSoup就是解析库,也是主要的爬取数据库
  • requests库调用了Session(类似一个浏览器),主要用于请求获取页面的

代码整合

import os
from pathlib import Path
from bs4 import BeautifulSoup
from requests import Session



class UltramanCrawling:

    def __init__(self):
        self.s = Session()
        self.s.headers.update(
            {"User-Agent": "Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0"})

    def request_url(self, url):
        """
        返回解码后,然后再解析的html树
        :param url:
        :return:
        """
        response = self.s.get(url=url)
        response.encoding = "gbk"
        return BeautifulSoup(response.text, 'lxml')

    def handle_tree(self):
        """
        处理树
        :return:
        """
        soup = self.request_url("http://www.ultramanclub.com/allultraman/")
        # 拿到奥特曼一览版块
        ultraheros = soup.find("div", class_="ultraheros-Contents_Lists")
        # 拿到lists下的标签树
        ultraheros_lists = ultraheros.find("ul", class_="lists")

        name_lists, url_lists = [], []

        # 循环获取奥特曼名称,并插入列表
        for name in ultraheros_lists.find_all("p"):
            name_lists.append(name.text.rstrip())

        # 循环获取奥特曼头像,并插入列表
        for img_url in ultraheros_lists.find_all("img"):
            url_lists.append(img_url.attrs["src"].replace(".", "http://www.ultramanclub.com/allultraman", 1))

        return name_lists, url_lists

    def run_main(self):
        """
        爬虫入口,并执行存储操作
        :return:
        """
        # 利用enumerate函数,获取url_lists中的索引和值
        name_lists, url_lists = self.handle_tree()
        for i, url in enumerate(url_lists):
            # 图片地址取请求接口下载
            response = self.s.get(url=url)
            # 判断是否请求成功
            if response.ok:
                # 拿取路径,更换图片保存的后缀名,进行存错
                with open(self.is_exists(name_lists[i] + ".png"), 'wb') as save:
                    save.write(response.content)
        else:
            print("全部下载完成")

    @staticmethod
    def is_exists(name: str):
        """
        静态方法,执行路径判定是否存在
        :param name:
        :return:
        """
        base_dir = Path(__file__).parent.joinpath("UltramanImg")
        if not os.path.exists(base_dir):
            os.mkdir(base_dir)
        return base_dir.joinpath(name)


if __name__ == '__main__':
    # 创建对象,调用运行方法
    UltramanCrawling().run_main()

上述代码直接给封装成了一个爬虫类,里面的一些方法也都写了注释,有python基础的几乎都能看得懂,没啥技术难点。

展示结果

给所有女生科普一下,每个奥特曼都是都一样的。_第2张图片​​

给所有女生科普一下,每个奥特曼都是都一样的。_第3张图片

从结果可以看到,奥特曼都长一样的定义是错的,请相信这个世界有光,也请相信这个世界是有奥特曼的 !!!!!

需要完整项目源代码点这里获取

你可能感兴趣的