吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3249|回复: 31
收起左侧

[Python 原创] 用jupyter notebook爬取美女壁纸

  [复制链接]
trash 发表于 2022-11-13 09:53
本帖最后由 trash 于 2022-11-13 13:50 编辑

网页分析
首先发现是静态加载所以利用for循环构造每一页网址
但发现页面上的图片是低质量的

所以我们先提取每一张图片单独的地址发现在t标签的ahref标签里利用加号构造图片单独地址
进入单独图片后再提取图片二进制网址(也就是src标签)并利用so库构造文件夹并写入

第一步:构造网页地址
[Asm] 纯文本查看 复制代码
#美女壁纸下载
import requests
from bs4 import BeautifulSoup
myheader = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
urls = ['https://pic.netbian.com/4kmeinv/']#构造每页网址
all_url = [] #设置空列表
for k in range(2,6):                 #构造每页网址
    page = f'https://pic.netbian.com/4kmeinv/index_{k}.html'
    urls.append(page)
for url in urls:                    #由于每页网址上的图片画质很低所以这里选择先爬取每张图图片的超链接
    r = requests.get(url,headers=myheader)#请求网页
    r.encoding='GBK'                    #中文编码
    sp = BeautifulSoup(r.text,'lxml')   #解析网页
    tg=sp.select_one('div.slist').select('li') #查找网页源代码里的class属性为slist的div标签并同时找div标签中的li标签
    for t in tg:                              #构造循环提取图片超链接
        header = 'https://pic.netbian.com'
        pic_url = header + t.a.get('href')        #构造网址形式
        all_url.append(pic_url)                   #存入all_url列表中
由于发现网站上每页给的图片是小图片点击图片跳转后才给大图片
第二步:提取高清图片的地址
[Asm] 纯文本查看 复制代码
pic_allurl=[]            #对每张图片的网页进行分析并构造下载网址并爬取高质量图片
for url in all_url:                       # 遍历网址
    r = requests.get(url)                 # 请求网页
    r.encoding='GBK'                    #用中文编码
    sp = BeautifulSoup(r.text,'lxml')               # 解析网页
    tags=sp.select_one('#img')                      #查找id为img的标签并存入tags
    src=('https://pic.netbian.com'+tags.img.get('src')) #提取tags标签里的scr属性
    title=tags.img.get('title')                            #提取tags标签里的title属性
    pic_allurl.append((title,src))                          #将构造好的网址和标题作为元组放进pic_allurl=[] 

第三步:写入文件
[Asm] 纯文本查看 复制代码
import os 
if not os.path.exists('美女壁纸'):  #如果不存在文件夹则创立文件夹
    os.mkdir('美女壁纸')            
for title,src in pic_allurl:      #拆解元组
    r=requests.get(src,headers=myheader)#请求二进制图片
    fileanme = './美女壁纸/'+title+src.split('/')[-1] #构造名字 按斜线切开取最后一个元素 同时确定了文件后缀
    with open(fileanme,'wb') as f:  #新建文件
        f.write(r.content)          #写入


源代码:「美女壁纸.ipynb」,点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。链接:https://www.aliyundrive.com/s/s24XjdDhPk6
成品链接:https://wwf.lanzouw.com/izua80ftvbeb
QQ截图20221113095654.png
20221113094739.png
QQ截图20221113102605.png

免费评分

参与人数 3吾爱币 +8 热心值 +3 收起 理由
w657945215 + 1 + 1 我很赞同!
zhaoqingdz + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| trash 发表于 2022-11-13 12:53
本帖最后由 trash 于 2022-11-13 13:51 编辑

这边提供另一个网站的美女壁纸爬取,质量更高(几mb一张)
新网站和彼岸结构差不多就不分析了大家可以自己试试首页网址:https://desk.3gbizhi.com/deskMV/
同样第一步:构造网页地址
[Python] 纯文本查看 复制代码
#美女壁纸下载(副本原版修改)
import requests
from bs4 import BeautifulSoup
myheader = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
urls = ['https://desk.3gbizhi.com/deskMV/']#构造每页网址注意这里第一页是单独出来的无法在for循环里构造
all_url = [] #设置空列表
for k in range(2,2):                 #构造每页网址
    page = f'https://desk.3gbizhi.com/deskMV/index_{k}.html'
    urls.append(page)
for url in urls:                    #由于每页网址上的图片画质很低所以这里选择先爬取每张图图片的超链接
    r = requests.get(url,headers=myheader)#请求网页
    r.encoding='utf-8'                    #中文编码
    sp = BeautifulSoup(r.text,'lxml')   #解析网页
    tg=sp.select_one('div.contlistw').select('li') 
    for t in tg:                              #构造循环提取图片超链接
            pic_url = t.a.get('href')        #构造网址形式
            all_url.append(pic_url)                   #存入all_url列表中

第二步:提取高清壁纸链接
[Python] 纯文本查看 复制代码
pic_allurl=[]            #对每张图片的网页进行分析并构造下载网址并爬取高质量图片
for url in all_url:                       # 遍历网址
    r = requests.get(url)                 # 请求网页
    r.encoding='utf-8'                    #用中文编码
    sp = BeautifulSoup(r.text,'lxml')               # 解析网页   
    src=(sp.select_one('div.morew').a.get('href')) #提取div标签里的高质量图片链接
    title=sp.h2.string                          #提取图片标题
    pic_allurl.append((title,src))                          #将构造好的网址和标题作为元组放进pic_allurl=[] 
第三步:保存
[Python] 纯文本查看 复制代码
import os 
if not os.path.exists('美女壁纸副本'):  #如果不存在文件夹则创立文件夹
    os.mkdir('美女壁纸副本')            
for title,src in pic_allurl:      #拆解元组
    r=requests.get(src,headers=myheader)#请求二进制图片
    fileanme = './美女壁纸副本/'+title+src.split('/')[-1] #构造名字 按斜线切开取最后一个元素 同时确定了文件后缀
    with open(fileanme,'wb') as f:  #新建文件
        f.write(r.content)          #写入

代码运行图如下:
QQ截图20221113130838.png

源代码:美女壁纸-三六壁纸.ipynb」,点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。链接:https://www.aliyundrive.com/s/dt1rTe1xfgH
成品链接:https://wwf.lanzouw.com/it87V0ftvd7g
 楼主| trash 发表于 2022-11-13 15:18
本帖最后由 trash 于 2022-11-13 15:25 编辑
lin2015 发表于 2022-11-13 14:35
大师,有python软件吗

我用的是Anaconda里的jupyter notebook 我之前有个帖子有怎么安装的过程
安装过程可以参考:https://www.52pojie.cn/thread-1701129-1-1.html
Anaconda的下载地址可以参考这里:https://www.52pojie.cn/thread-1114489-1-1.html
还有一个大佬发的:@青春丿易逝 https://repo.anaconda.com/archive/Anaconda3-2020.11-Windows-x86_64.exe
 楼主| trash 发表于 2022-11-13 10:02
使用到request、so、BeautifulSoup、三个简单的库,大佬们请多指教
温柔 发表于 2022-11-13 11:57
彼岸爬的只是普通大图,不是高清大吧?库的使用都差不多,区别在于你用哪个更熟练
shenxian2022 发表于 2022-11-13 09:58
功能太强大了,赞一个
yang0318 发表于 2022-11-13 10:02
要是有现成的软件就好了。自己看代码不会做。忘而生叹
Qin77 发表于 2022-11-13 10:05
这个不错,能将代码的爬取使用的很好,就是那里有点不好
 楼主| trash 发表于 2022-11-13 10:07
yang0318 发表于 2022-11-13 10:02
要是有现成的软件就好了。自己看代码不会做。忘而生叹

爬虫的网页结构通常不同,软件应该很难做到对不同网址进行爬取。52大佬很多跟着大佬一起学一定会有所收获的
Greennova 发表于 2022-11-13 10:21
trash 发表于 2022-11-13 10:07
爬虫的网页结构通常不同,软件应该很难做到对不同网址进行爬取。52大佬很多跟着大佬一起学一定会有所收获 ...

用爬虫框架
Greennova 发表于 2022-11-13 10:23
搞来搞去都是爬彼岸
restart19 发表于 2022-11-13 10:24
不错,写的简介明了。
 楼主| trash 发表于 2022-11-13 10:34
Greennova 发表于 2022-11-13 10:23
搞来搞去都是爬彼岸

这个网站确实结构明了,简单适合新手
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表