手把手教你利用Python爬虫采集二次元美女壁纸

【网络爬虫】Python爬取上百张二次元电脑壁纸 文章目录1. 观察网站2. 实际代码3. 运行效果 1. 观察网站 https://konachan.net/post,这个网站上图的质量还不错: 而且提供了高级检索功能: 什么是 Questionable 和 Explicit ?我很好奇: 看了一下网站的Wiki,明白了: 由于本人电脑的显示分辨率是1920x1280,所以我希望电脑壁纸至少要有1920x1080或以上尺寸,所以在高级检索界面修改了一下 Width 和 Height ,提交后检索结果如下: F12检查网页,发现每张图片都被包含在 阅读详情

前言

(又到了常见的无中生友环节了)我有一个朋友,最近沉迷二次元,想要与喜欢的二次元角色度过一生,就像11区与初音未来结婚的阿宅那样。于是作为为朋友两肋插刀的正义的化身,决定为其充满魔幻现实的人生再添加一抹亮色,让他深陷其中无法自拔,于是在二次元的宇宙里,帮他用Python获取了二次元女友(们)。

尽管二次元知识人类幻想出来的唯美世界,但其本质上还是我们心中模糊的对梦想生活的憧憬和对美好未来的期望,这卡哇伊的颜,爱了爱了,我给你讲。

程序说明

通过爬取知名二次元网站——触站,获取高清动漫图片,并将获取的webp格式的图片转化为更为常见的png格式图片。

二次元女友获取程序

使用requests库请求网页内容,使用BeautifulSoup4解析网页,最后使用PIL库将webp格式的图片转化为更为常见的png格式图片。

观察网页结构

首先选择想要获取的图片类型,这里已女孩子为例,当然大家也可以选择生活或者脚掌,甚至是男孩子。

进入女孩子标签页面,观察页面链接,爬取多个页面,查看第2页链接为:

https://www.huashi6.com/tags/161?p=2

第3页链接为:

https://www.huashi6.com/tags/161?p=3

可以看出,不同页面网址仅改变了页面数字,因此可以构造如下模式,并使用循环,爬取所有页面:

url_pattern = "https://www.huashi6.com/tags/161?p={}"
for i in range(1, 20):
    url = url_pattern.format(i)

接下来,在爬取网页前,使用浏览器“开发者工具”,观察网页结构。首先尝试定位图片元素:


于是自然想到使用find_all语法获取所有class=‘v-lazy-img v-lazy-image-loaded’的标签:

img_url = soup.find_all('img', attr={'class': 'v-lazy-img v-lazy-image-loaded'})

但是发现并未成功获取,于是经过进一步探索发现,其图片信息是在script元素中动态加载的:


需要注意的是,在请求页面时,可以在构造请求头时,添加'Cookie'键值,但是没有此键值也能够运行。

headers = {
    'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:86.0) Gecko/20100101 Firefox/86.0',
    # 根据自己的情况修改Cookie值
    #'Cookie':''
}
url_pattern = "https://www.huashi6.com/tags/161"
response = requests.get(url=url, headers=headers)

页面解析

使用beautifulsoup解析页面,获取JS中所需数据:

results = soup.find_all('script')[1]

为了能够使用re解析获取内容,需要将内容转换为字符串:

image_dirty = str(results)

接下来构造正则表达式获取图片地址:

pattern = re.compile(item, re.I|re.M)

然后查找所有的图片地址:

result_list = pattern.findall(image_dirty)

为了方便获取所需字段,构造解析函数

def analysis(item,results):
    pattern = re.compile(item, re.I|re.M)
    result_list = pattern.findall(results)
    return result_list

打印获取的图片地址:

urls  = analysis(r'"path":"(.*?)"', image_dirty)
urls[0:1]

发现一堆奇怪的字符:

'images\\u002Fresource\\u002F2021\\u002F06\\u002F20\\u002F906h89635p0.jpg',

这是由于网页编码的原因造成的,由于一开始使用utf-8方式解码网页,并不能解码Unicode:

response.encoding = 'utf-8'
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')

因此虽然可以通过以下方式获取原始地址:

url = 'images\u002Fresource\u002F2021\u002F05\u002F22\u002F90h013034p0.jpg'
decodeunichars = url.encode('utf-8').decode('unicode-escape')

但是我们可以通过response.encoding = 'unicode-escape'进行更简单的解码,缺点是网页的许多中文字符会变成乱码,但是字不重要不是么?看图!

创建图片保存路径

为了下载图片,首先创建图片保存路径:

# 创建图片保存路径
if not os.path.exists(webp_file):
    os.makedirs(webp_file, exist_ok=True)
if not os.path.exists(png_file):
    os.makedirs(png_file, exist_ok=True)

图片下载

当我们使用另存为选项时,发现格式为webp,但是上述获取的图片地址为jpg或png,如果直接存储为jpg或png格式,会导致格式错误。

因此需要重新构建webp格式的文件名:

name = img.split('/')[-1]
name = name.split('.')[0]
name_webp = name + '.webp'

由于获取的图片地址并不完整,需要添加网站主页来构建图片地址:

from urllib.request import urljoin
domain = 'https://img2.huashi6.com'
img_url = urljoin(domain,img)

接下来就是下载图片了:

r = requests.get(img_url,headers=headers)
if r.status_code == 200:
  with open(name_webp, 'wb') as f:
    f.write(r.content)

格式转换

最后,由于得到的图片是webp格式的,如果希望得到更加常见的png格式,需要使用PIL库进行转换:

image_wepb = Image.open(name_webp)
image_wepb.save(name_png)

爬取结果展示

完整程序

import time
import requests
from bs4 import BeautifulSoup
import os
import re
from urllib.request import urljoin
from PIL import Image


webp_file = 'girlfriends_webp'
png_file = 'girlfriends_png'


print(os.getcwd())


# 创建图片保存路径
if not os.path.exists(webp_file):
    os.makedirs(webp_file, exist_ok=True)
if not os.path.exists(png_file):
    os.makedirs(png_file, exist_ok=True)


headers = {
    'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:86.0) Gecko/20100101 Firefox/86.0',
    #'Cookie':''
    'Connection': 'keep-alive'
}
url_pattern = "https://www.huashi6.com/tags/161?p={}"


domain = 'https://img2.huashi6.com'


# 图片地址获取函数
def analysis(item,results):
    pattern = re.compile(item, re.I|re.M)
    result_list = pattern.findall(results)
    return result_list
    
# 图片格式转换函数
def change_webp2png(name_webp, name_png, img_url):
    try:
        image_wepb = Image.open(name_webp)
        image_wepb.save(name_png)
    except:
        download_image(name_webp, name_png, img_url)


# 图片下载函数
def download_image(name_webp, name_png, img_url):
    if not os.path.exists(name_png):
        if os.path.exists(name_webp):
            os.remove(name_webp)
        print(img_url)
        r = requests.get(img_url,headers=headers)
        # print(r.content)
        time.sleep(5)
        if r.status_code == 200:
            with open(name_webp, 'wb') as f:
                f.write(r.content)
        change_webp2png(name_webp, name_png, img_url)


for i in range(1, 20):
    time.sleep(5)
    url = url_pattern.format(i)
    response = requests.get(url=url, headers=headers)
    # 解码
    # response.encoding = 'utf-8'
    response.encoding = 'unicode-escape'
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'html.parser')


    results = soup.find_all('script')


    image_dirty = str(results[1])


    urls  = analysis(r'"path":"(.*?)"', image_dirty)[:20]


    for img in urls:
        img_url = urljoin(domain,img)


        # 获取文件名
        name = img.split('/')[-1]
        name = name.split('.')[0]
        name_webp = name + '.webp'
        name_webp = os.path.join(webp_file, name_webp)
        name_png = name + '.png'
        name_png = os.path.join(png_file, name_png)
        download_image(name_webp, name_png, img_url)

球点赞

学习交流:

①Python电子书有

②Python开发环境安装教程有

③Python视频有

④软件开发常用词汇有

⑤Python学习路线图有

⑥项目源码案例分享有 如果你用得到的话可以直接拿走,在我的QQ技术交流Q群里

群号:200160592

手把手带你爬取百度美女图片,Python练手项目! 这谁顶得住啊~ 阅读详情

相关推荐

python项目实战——下载美女图片

因为这里的图片都是一组一组的,所以采用创建文件夹的方式,把一组图片放在一个文件夹里面,这个文件夹里面放这一组图片,这个文件夹使用这组图片的标题命名,因为这组图片没有自己的名字,我们还需要人工加个序号。这里使用requests库的get请求,可以得到网页的源代码,找到了图片的位置,就是在源代码里面,如果不在源代码里面需要使用抓包的方式,获取图片的链接。一开始的时候发现,在图片的下面可以选择页数,点击第几页就会跳转,根据这个思路,好像可以把这个页数链接爬下来,制成列表再挨个访问。

FZ51111的博客 6905

python3怎么把\u002F这种类型的字符进行对应的替换

slashUStr = "https:\u002F\u002Fm.dhgate.com\u002Fproduct\u002Fsnoop-dogg-doggystyle-album-logo-black-white\u002F427954156.html" decodedUniChars = slashUStr.encode('utf-8').decode("unicode_escape") print("decodedUniChars=", decodedUniChars)

南巷清风 1万+

python爬取街拍美女图片

python爬取街拍美女图片 完整代码: import requests from urllib.parse import urlencode import os from hashlib import md5 from multiprocessing.pool import Pool def get_page(offset): headers = { 'cookie':...

weixin_42340241的博客 1万+

爬虫爬取二次元网站美女图片

爬虫爬取二次元网站美女图 前言 本次需要爬取二次元网站cos板块下的图片 需要用到request模块与lxml模块,所以请提前安装好这两个模块,打开cmd程序输入 request lxml pip install request pip install lxml xpath解析 xpath解析:最常用最便捷高效的一种解析方式,通用性。 -xpath解析原理: - 1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中 - 2.调用etree对象中的xpath方法结合着

qq_45753992的博客 2万+

STM32H743+YT8512C以太网通信实战:CubeMX与LWIP配置详解

本文详细解析了基于STM32H743微控制器与YT8512C PHY芯片的以太网通信实战方案。通过CubeMX工具进行RMII接口、MPU、时钟树等关键硬件配置,并重点阐述了如何修改LWIP协议栈驱动代码以适配YT8512C芯片,解决了LAN8742驱动不兼容的问题。文章提供了从工程创建、代码适配到调试验证的完整步骤,帮助开发者快速实现稳定可靠的嵌入式网络连接。

weixin_29190573的博客 559

【学习笔记】人群归因分数 PAF 以及combined PAF(更新)

在此推荐2篇发表在lancet以及jama子刊上的paf文章,这两篇文章套路是一样的,只是在不同国家进行。希望对大家学习PAF有所帮助,后面有新内容也会继续分享,也欢迎大家分享使用R语言计算PAF的经验~~~的时候,先建立了相关矩阵,再做主成分分析,得到communality。详细信息大家可翻阅原文。

weixin_53499537的博客 1498

python爬虫爬取美女图片(selenium)

之前爬一个**网站,因为是动态加载网站,爬下来的图片全是转呀转的GIF图,气死我了,学了selenium之后,龙王归来,势在必得 先看需要的库 from selenium import webdriver from lxml import etree import time import requests 我们使用selenium去打开页面 #实例化了一个浏览器对象(一定要传入浏览器的驱动程序) wd = webdriver.Chrome(executable_path=r'./chromedr

danke的博客 1万+

ESP32连接OneNet云平台实现多设备联动控制完整示例

通过esp32连接onenet云平台,实现远程设备间的智能联动控制,利用MQTT协议完成数据通信,esp32连接onenet云平台后可高效稳定地上传与下发指令,提升物联网系统响应速度与自动化水平。

weixin_42360733的博客 547

Python爬虫-带你爬取高清美女图片

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:明天依旧可好 ( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 ) 爬虫的爬取步骤: 准备好我们所需要的代理IP(代理IP的获取方法见:https://blog.youkuaiyun.com/qq_38251616/article/details/7954

weixin_49345590的博客 1531

Mac新手必看:用Homebrew安装wget的保姆级教程,附常见报错一键修复

本文为Mac新手提供使用Homebrew安装wget的详细教程,涵盖从Homebrew安装到wget基础使用的全流程,并附常见报错一键修复方案。通过本指南,用户可轻松掌握命令行下载工具wget的安装与使用技巧,解决Mac环境下资源下载的各种问题。

weixin_30635053的博客 367

QT下利用FFTW实现功率谱密度分析(周期图法)

写在前面 出于项目需求,需要在QT的msvc 2015编译环境下实现功率谱密度估计。 所以这个需求很直接的关键词就是 1. C++ 2. QT 3. 傅里叶变换 4. 功率谱密度估计 但是在网上搜索了很久,没有一个非常直接的答案。所以我觉得很有必要写一篇文章来说明,在QT msvc2015 32bit环境下如何实现功率谱密度估计。 本文并没有经过严格编辑,但代码是已经可以跑通的,如...

李时珍食疗志的博客 5223

python爬取美女照片

爬虫是一个模拟人类请求网站行为的程序。可以自动请求网页、并数据抓取下来,然后使用一定的规则提取有价值的数据。 1.爬取照片的目标网址是:http://www.netbian.com/mei/index.htm 可以通过F12检查元素,之后用小箭头点击图片,找到我们需要爬取图片的位置。 2.向网站发送请求 利用 requests 库向网站发出请求,发送 get 请求就是通过 requests.get 来调用: respone= requests.get("http://www.netb..

qq_45222550的博客 7159

混响效果的编程实现:Schroeder混响模型与Moorer型混响

Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。通过调整各个反射器和全通滤波器的参数,可以实现不同的混响效果。

2301_79326857的博客 1082

教你如何采集喜欢的动漫图片

现在的年轻人特别喜欢一些动漫人物图片,还有一些特别热爱的COS人。在很多平台上会有很多这些兴趣爱好群或是部落。这些地方会分享到很多有趣的图片和一些精彩的手工艺术活,那如何从这些吧里或部落里批量采集到这些图片呢?今天小编在这里具体操作分享一下。感兴趣的可以学一下。 首先,我们在网上搜索或是百度上下载一个【载图助手】软件,这个可以辅助下载贴吧的图片和视频。 1、找动漫图片可以网上搜索也可以打开百度贴吧并进入,在搜索栏里输入需要的关键字,并点击进入贴吧。 2、挑选喜欢的手绘风格,随后进入并复制上方的链接地

weixin_47950745的博客 1136

RK3588平台开发系列讲解(SARADC篇)SARADC的工作流程

📢本篇将介绍SARADC的源码分析和工作流程。

内核笔记 3231

Authentication Assertion Tickets,SAP 系统到系统单点登录里的短命凭证

SAP 系统间的身份传递机制存在 Authentication Assertion Ticket 和 SAP Logon Ticket 两种易混淆的凭证。前者用于系统间短时身份委托(有效期2分钟,通过HTTP头传输),后者用于浏览器SSO(可配置有效期,通过Cookie传输)。Assertion Ticket依赖签发系统的数字签名和严格的时间同步,适用于ABAP/Java系统间的后台作业调用。现代SAP架构已转向OAuth 2.0等标准协议,但老系统中仍需注意两种票据的关键差异:传输方式、有效期、接收方限制

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 602

使用Python爬虫爬取网络美女图片

代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install requests -i https://mirrors.ustc.edu.cn/pypi/web/simple 安装lxml库(用于解析html文件) pip install lxml -i h...

weixin_34380296的博客 4124

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

突破次元壁障,Python爬虫获取二次元女友

前言 我有一个朋友,最近沉迷二次元,想要与喜欢的二次元角色度过一生,就像11区与初音未来结婚的阿宅那样。 于是作为朋友两肋插刀的正义的化身,决定为其充满魔幻现实的人生再添加一抹亮色,让他深陷其中无法自拔,于是在二次元的宇宙里,帮他用Python获取了二次元女友(们)。 尽管二次元知识人类幻想出来的唯美世界,但其本质上还是我们心中模糊的对梦想生活的憧憬和对美好未来的期望,这卡哇伊的颜,爱了爱了,我给你讲。 程序说明 通过爬取知名二次元网站——触站,获取高清动漫图片,并将获取的webp格式...

IT教育任姐姐的博客 941

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

用Python爬虫爬取黑丝美女图片,超简单!

并且发现图片详情页链接在herf=后面(同时我们注意到有部分无效链接也在div标签中,观察它们异同,发现无效链接存在’https’字样,因此可在代码中依据此排出无效链接,对应第4条中的函数代码),只需提取出来再在前面加上网页首页链接即可打开,并且右键图片,‘审查元素’,复制链接下载的图片接近1M,表示是高清图片了,到这一步我们只需调用下载保存函数即可保存图片。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

qq_41314882的博客 900

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python 3.x教程:如何使用Python将图片转为漫画风格?

漫画效果生成的效果会因为原始图片的不同而有所差异,因此可能需要对代码中的参数进行微调以达到最佳效果。通过不断尝试和调整,你可以使用Python将你的图片转换为独特的漫画风格。在本文中,我们将介绍如何使用Python将图片转换为漫画。以上代码读取名为input.jpg的图片,将其转换为灰度图像,然后使用Canny算法检测边缘。以上代码将名为input.jpg的图片转换为漫画效果,并将生成的漫画效果图片保存为output.jpg。最后,我们可以使用cv2.imwrite函数将生成的漫画效果图片保存到本地。

小白 1919

老司机带你用python爬取妹子图,接稳这波福利

作为Python的初学者,爬虫肯定是入门的不二选择,既能熟悉语法,又能通过爬虫了解一定的网络编程知识。要想完美的食用本篇教程,首先你需要熟悉Python的基础语法以及基础...

欢迎关注公众号:【码农突围】,回复9999,可以获取一份LeetCode刷题笔记 2万+

Python爬虫-教抓取动漫妹子图

目标网站 https://divnil.com 首先看看这网站是怎样加载数据的; 打开网站后发现底部有下一页的按钮,ok,爬这个网站就很简单了; 我们目标是获取每张图片的高清的源地址,并且下载图片到桌面; 先随便打开一张图片看看详细; emmm,只有一张图 看起来还挺清晰的,单击新窗口打开图片 更多请加qq群850973621更多请加qq群850973621更多请加qq群850973621 然后下载图片,说实话,这图片很小,我很担心不是高清原图(管他的); PS:一定要禁用广告拦截插件,不然加载不出

Ugyfyv的博客 458

Python爬虫之——爬取妹子图片

博主文章地址:http://cuiqingcai.com/3179.html环境:python 3.6注:单线程版以在安卓的Qpython(py2.7)上运行成功第三方库requests:解析url beautifulsoup4:不会正则表达式童鞋的福音,可以容易的提取到html文件中各种标签及其属性安装方法: pip install requests pip install beautifuls...

欢迎光临:天乐博客 3834

python一键爬取美女图片(梅开二度)

之前写过一篇正则表达式爬美女图片的文章,大佬说,xpath更准确,于是今天尝试了一下xpath。哇塞,xpath比正则好用不要太多,不仅准确,而且不需要自己去找节点,用Google Chrome可以直接copy。

一名在读学生 1835

python都被我用来爬美女图片了

废话不多说直接看主题 目录--多进程爬取美女图片爬取网页地址爬取链接爬取链接爬取代码 爬取网页地址 https://so.toutiao.com/search?keyword=%E8%A1%97%E6%8B%8D%E7%BE%8E%E5%A5%B3&pd=atlas&dvpf=pc&aid=4916&page_num=0&search_json={%22from_search_id%22:%22202108220858130102121920511F8DC562%22

qq_46883219的博客 2104

【Python爬虫五十个小案例】Python提取某斗颜值主播图片~

在这个博客中,我们将详细讲解如何通过 Python 编写一个爬虫来从斗鱼平台抓取美女主播的图片。随着爬虫技术的普及,抓取互联网上的公开数据变得越来越容易,而斗鱼作为一个主流的直播平台,提供了丰富的直播内容和主播的相关信息。在这里,我们通过实例来展示如何抓取斗鱼页面上的图片,并将其保存到本地。网络爬虫是通过模拟浏览器行为,从互联网中自动下载网页内容的程序。它能够高效地抓取网站上的数据,通常用于数据挖掘、信息收集等用途。本文详细介绍了如何编写一个简单的 Python 爬虫,从斗鱼平台抓取美女主播的图片。

null18的博客 2202
上一篇: Python趣味编程小技巧,图片转炫酷字符画,一看就是高手!
下一篇: Python中输入密码总是可见?那是你没使用过这个模块
Python编程_可乐
博客等级 码龄6年 917粉丝 100原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值