【网络爬虫】Python爬取上百张二次元电脑壁纸

编程入门 行业动态 更新时间:2024-10-28 12:19:09

【网络<a href=https://www.elefans.com/category/jswz/34/1770264.html style=爬虫】Python爬取上百张二次元电脑壁纸"/>

【网络爬虫】Python爬取上百张二次元电脑壁纸

文章目录

  • 1. 观察网站
  • 2. 实际代码
  • 3. 运行效果

1. 观察网站

,这个网站上图的质量还不错:

而且提供了高级检索功能:

什么是 QuestionableExplicit ?我很好奇:

看了一下网站的Wiki,明白了:

由于本人电脑的显示分辨率是1920x1280,所以我希望电脑壁纸至少要有1920x1080或以上尺寸,所以在高级检索界面修改了一下 WidthHeight ,提交后检索结果如下:

F12检查网页,发现每张图片都被包含在一个 <li></li> 标签对中,大图的链接在其中的类名为 directlink largeimg<a></a> 标签对的 href 属性中:

翻页也很简单,就是在 = 后面添加数字。有时候可能遇到某一页没有任何图片的情况,检查是否有 Nobody here but us chickens! 这句话或者判断图片节点的数量是否为零即可:


2. 实际代码

以下代码不保证没有Bug,如要使用请自行修改:

# -*- coding: utf-8 -*-
import os
import time
import requests
from bs4 import BeautifulSoup as BSurl = "={}&tags=width:{}..+height:{}.." # 页面,宽度下限,高度下限
outDir = "C:\\pics" # 图片输出文件夹
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"}# 输入URL,得到响应内容
def getResponse(url):try:time.sleep(100) # 慢点爬r = requests.get(url, headers=headers)r.raise_for_status() # 响应状态码,出错则抛出异常 return rexcept Exception as ex: # 出错就递归抓取print(type(ex)) return getResponse(url)# 输入html,输出soup对象
def getSoup(html):return BS(html, "lxml")# 输入soup,输出图片节点列表
def getImagesList(soup):images = soup.find_all("a", class_="directlink largeimg")return images# 输入图片编号和URL,保存图片
def saveImage(imageNum, imageURL):if (os.path.exists(outDir) == False):os.mkdir(outDir)with open(outDir + "\\{}.png".format(imageNum), 'wb') as f:image = getResponse(imageURL).contentf.write(image)def process(endPage, width, height):imageNum = 1 # 以数字为图片命名for i in range(1, endPage):html = getResponse(url.format(i, width, height)).textsoup = getSoup(html)imagesList = getImagesList(soup)for j in range(len(imagesList)):saveImage(imageNum, imagesList[j]['href'])imageNum = imageNum + 1if __name__ == "__main__":# endPage = int(input("输入要抓取的终止网页页码:\n"))# width = int(input("输入图片最低宽度:\n"))# height = int(input("输入图片最低高度:\n"))endPage = 30 # 只抓取第1页到第30页的图片width, height = 1920, 1080process(endPage, width, height) # 从第1页抓取到第endPage页,图片尺寸大于(width,height)

3. 运行效果

下载的图片文件夹如下,大概263张,因为有几张是用户重复上传的:

放上一张能过审的:

更多推荐

【网络爬虫】Python爬取上百张二次元电脑壁纸

本文发布于:2024-02-26 07:18:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1701719.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爬虫   壁纸   电脑   网络   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!