【爬虫】关于爬取彼岸图网4K壁纸的分析

目标地址

网络绝大部分所爬取的壁纸URL类似这样:

https://pic.netbian.com/uploads/allimg/180315/110404-1521083044b19d.jpg

然而显然这是大概在 1200 × 600 1200\times600 1200×600左右像素的直接可右击存储的壁纸,并非我们想要的 4 K 4K 4K.
彼岸图网非会员每日仅限下载一张壁纸,这足够拿来分析.

打开 G o o g l e   C h r o m e Google \ Chrome Google Chrome,开启老朋友开发者工具Network,选择一张壁纸下载,首先会GET类似下面这样的请求:

https://pic.netbian.com/e/extend/downpic.php?id=18853&t=0.9454025258099892

Preview得到:

{msg: 4, pic: "/downpic.php?id=18853&classid=53"}
	msg: 4
	pic: "/downpic.php?id=18853&classid=53"

这意味着此次点击向其服务器发送了请求id18853的壁纸,紧接着会GET 4 K 4K 4K壁纸的链接:

https://pic.netbian.com/downpic.php?id=18853&classid=53

id即壁纸id,那么上面的t是什么,msg又是什么,需要去js里分析,刷新当前页面,在Network里选择JS,会看到common.js,里面很容易找到:

//下载壁纸
$(".downpic a").click(function() {
    var id = $(this).attr("data-id");
    $.getJSON('/e/extend/downpic.php?id=' + id + '&t=' + Math.random(), function(data) {
        if (data.msg == 0) {
            $("#login_opacity_bg,.tbox").fadeIn(300);
            weixinlogin();

        } else if (data.msg == 1) {
            $("#footer").before('<div class="tbox viptps"><div class="close">×</div><div class="vipcon">今日下载量已用完,<a href="/e/member/buygroup/" title="赞助1元即可下载">赞助1元即可下载</a></div></div><div id="login_opacity_bg"></div>');
            vipmsg();

        } else if (data.msg == 2) {
            $("#footer").before('<div class="tbox viptps"><div class="close">×</div><div class="vipcon">今天已下载20张,<a href="/e/member/buygroup/" title="赞助会员">升级年会员海量下载</a></div></div><div id="login_opacity_bg"></div>');
            vipmsg()
        } else if (data.msg == 3) {

            if (data.pic) {
                var txt = '<br />3秒后继续下载';
                setTimeout('goback(\'' + data.pic + '\')', 3000);
            } else {
                var txt = '';
            }
            $("#footer").before('<div class="tbox viptps"><div class="close">×</div><div class="vipcon">' + data.info + txt + '</div></div><div id="login_opacity_bg"></div>');
            $("#login_opacity_bg,.tbox").fadeIn(300);
            weixinlogin();
            $(".tbox .close ").click(function() {
                $(".tbox,#login_opacity_bg").fadeOut(300).remove();
            });
        } else if (data.msg == 5) {
            $("#footer").before('<div class="tbox viptps"><div class="close">×</div><div class="vipcon">一台电脑免费下载一张,<a href="/e/member/buygroup/" title="赞助送会员">立即赞助送会员</a></div></div><div id="login_opacity_bg"></div>');
            vipmsg();

        } else {
            //window.location.href=data.pic; 
            // window.open(data.pic);
            $('<iframe style="display:none;"/>').appendTo('html').attr('src', data.pic);
        }
    });
});

'&t=' + Math.random()可知t[0,1]间的随机数,msg则是请求数据的类型,不同的msg值对应着不同的返回结果,到这里拟构造请求:

https://pic.netbian.com/e/extend/downpic.php?id=YOUR_IDEAL_IMAGE_ID&t=A_RANDOM_NUMBER_BETWEEN ZERO_AND_ONE

结果是:

{"msg" : 1}

这是因为非会员单日下载一张壁纸的限制,欲突破此限制,首先需要会员 (这是不可避免的),接下来便可拿到会员账号的cookie (这是关键),携带此cookie进行请求即可.

− − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − ---------------------------------

网络上绝大多数所谓爬虫不过爬取了上述提到的中等质量壁纸,这对于追求极品画质的人显然是不够的,然而贫穷的固有限制阻挡了目前的脚步,就此放弃未免太过遗憾,这里不妨换一个角度出发,比如拿到 1200 × 600 1200\times600 1200×600左右像素的壁纸后,将其无损放大,即升级画质.

基于深度卷积神经网络waifu2x是不错的选择,关于其介绍可自行Google.

A . \mathcal{A}. A.如果是广泛浏览但仅追求少数优质壁纸,可直接前往waifu2x官方网站 (免费),这里的默认链接是中国的index,如果可科学上网,日本源址是不错的选择.

B . \mathcal{B}. B.如果想将升格合并到爬虫之中,便需要API,庆幸的是,作者在DeepAI提供了免费waifu2x API里面提供了JSPythonC sharp等接口,详情见Waifu2x API Documentation,这里以Python为例,可以看到:

# Ensure your pyOpenSSL pip package is up to date
# Example posting a image URL:

import requests
r = requests.post(
    "https://api.deepai.org/api/waifu2x",
    data={
        'image': 'YOUR_IMAGE_URL',
    },
    headers={'api-key': 'YOUR_API_KEY'}
)
print(r.json())


# Example posting a local image file:

import requests
r = requests.post(
    "https://api.deepai.org/api/waifu2x",
    files={
        'image': open('/path/to/your/file.jpg', 'rb'),
    },
    headers={'api-key': 'YOUR_API_KE'}
)
print(r.json())

作者同时提供了image urllocal image两种API,根据需求使用不同的API即可,这里注意到api-key也是免费获取的,只需在DeepAI注册账号.

一点遗憾

如果采取API,放大比例大概在1.3倍左右,同时也可能进行了未知程度的降噪,这并不符合用户的特定要求 (例如官网中可选择的降噪和放大比例),目前我还没能发现API里具备可调节的相关参数 (期待大家挖掘,欢迎留言).

C . \mathcal{C}. C.鉴于以上情况,另外一种方式便是使用其官方网站的API,在准备大展身手之前要注意到官网已经添加了GooglereCAPTCHA人机验证,如果有需求进行此种方式,需要花费一定的金额去购买recognition API,有时往往金钱能节省一大部分时间,尤其是金额在较低或可接受的范围内,这里给出2captcha的传送门,在解决人机认证的问题后,只需如往常爬虫一样,去分析waifu2x官网的逻辑 (参数很少),模拟请求即可.

D . \mathcal{D}. D.当然还有一种方式,那就是构建属于自己的waifu2x,作者慷慨的开源使无数人受益良多,如果具备不错的电脑设备,这或许是最佳的选择.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值