利用python+bs4爬取奥特曼粉丝联盟的奥特曼图片,难点把其实也没有,就是爬虫不经常搞,容易忘记一些东西。废话不多说,直接上代码
主要引包
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 Sessionclass 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_listsdef 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("全部下载完成")@staticmethoddef 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基础的几乎都能看得懂,没啥技术难点。
展示结果
从结果可以看到,奥特曼都长一样的定义是错的,请相信这个世界有光,也请相信这个世界是有奥特曼的 !!!!!
以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的点赞和分享哟,谢谢!
未完,待续…
一直都在努力,希望您也是!
微信搜索公众号:就用python
作者:李 锋|编辑排版:梁莉莉