鱼C论坛

 找回密码
 立即注册
查看: 618|回复: 14

这个报错是为什么啊

[复制链接]
发表于 2018-10-14 20:53:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
)8WF9DWIS6]@Q1D44NI3BFG.png


import urllib.request
import os

def url_open(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36')
    response = urllib.request.urlopen(url)
    html = response.read()

    print(url)
    return html


def get_page(url):
    html = url_open(url).decode('utf-8')

    a = html.find('current-comment-page') + 23
    b = html.find(']',a)

    return html[a:b]

def find_imgs(url):
    html = url_open(url).decode('utf-8')
    img_addrs = []

    a = html.find('img src=')

    while a != -1:
        b = html.find('.jpg',a,a+255)
        if b != -1:
            img_addrs.append(html[a+9:b+4])
        else:
            b = a + 9
        a = html.find('img src=',b)

    return img_addrs

def save_imgs(folder,img_addrs):   
    for each in img_addrs:
        filename = each.split('/')[-1]
        with open(filename,'wb') as f:
            img = url_open(each)
            f.write(img)

def download_mm(folder='ooxx',pages=10):
    os.makedirs(folder)
    os.chdir(folder)

    url = 'http://jandan.net/ooxx/'
    page_num = int(get_page(url))

    for i in range(pages):
        page_num -= i
        page_url = url + 'page-' + str(page_num) + '#comments'
        img_addrs = find_imgs(page_url)
        save_imgs(folder,img_addrs)


if __name__ == '__main__':
    download_mm()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-14 20:54:55 | 显示全部楼层
不要沉啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 20:55:51 | 显示全部楼层
煎蛋反爬了。你得到的不是真正的图片URL
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-14 20:58:37 | 显示全部楼层
塔利班 发表于 2018-10-14 20:55
煎蛋反爬了。你得到的不是真正的图片URL

怎么弄,吧User-Agent添加?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 21:01:03 | 显示全部楼层
923204485 发表于 2018-10-14 20:58
怎么弄,吧User-Agent添加?

光是小甲鱼0基础的课程不太够,可以爬百度贴吧之类的试手
学了极客系列再来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-14 21:12:34 | 显示全部楼层
塔利班 发表于 2018-10-14 21:01
光是小甲鱼0基础的课程不太够,可以爬百度贴吧之类的试手
学了极客系列再来

兄弟,那边的图片没有反扒,过去试试手的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 21:22:29 | 显示全部楼层
923204485 发表于 2018-10-14 21:12
兄弟,那边的图片没有反扒,过去试试手的

那你得到了全部图片的URL了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 22:24:02 | 显示全部楼层
923204485 发表于 2018-10-14 21:12
兄弟,那边的图片没有反扒,过去试试手的

教教我嘛,怎么获取下面代码的16进制md5加密函数啊??
  1. function md5(a) {
  2.     return hex_md5(a) //找不到hex_md5都函数
  3. }
  4. var jd82tylpAK1P0Tvmga2rljssRTRVhio67x = function(n, t, e) {
  5.     var f = "DECODE";
  6.     var t = t ? t : "";
  7.     var e = e ? e : 0;
  8.     var r = 4;
  9.     t = md5(t);
  10.     var d = n;
  11.     var p = md5(t.substr(0, 16));
  12.     var o = md5(t.substr(16, 16));
  13.     if (r) {
  14.         if (f == "DECODE") {
  15.             var m = n.substr(0, r)
  16.         }
  17.     } else {
  18.         var m = ""
  19.     }
  20.     var c = p + md5(p + m);
  21.     var l;
  22.     if (f == "DECODE") {
  23.         n = n.substr(r);
  24.         l = base64_decode(n)
  25.     }
  26.     var k = new Array(256);
  27.     for (var h = 0; h < 256; h++) {
  28.         k[h] = h
  29.     }
  30.     var b = new Array();
  31.     for (var h = 0; h < 256; h++) {
  32.         b[h] = c.charCodeAt(h % c.length)
  33.     }
  34.     for (var g = h = 0; h < 256; h++) {
  35.         g = (g + k[h] + b[h]) % 256;
  36.         tmp = k[h];
  37.         k[h] = k[g];
  38.         k[g] = tmp
  39.     }
  40.     var u = "";
  41.     l = l.split("");
  42.     for (var q = g = h = 0; h < l.length; h++) {
  43.         q = (q + 1) % 256;
  44.         g = (g + k[q]) % 256;
  45.         tmp = k[q];
  46.         k[q] = k[g];
  47.         k[g] = tmp;
  48.         u += chr(ord(l[h]) ^ (k[(k[q] + k[g]) % 256]))
  49.     }
  50.     if (f == "DECODE") {
  51.         if ((u.substr(0, 10) == 0 || u.substr(0, 10) - time() > 0) && u.substr(10, 16) == md5(u.substr(26) + o).substr(0, 16)) {
  52.             u = u.substr(26)
  53.         } else {
  54.             u = ""
  55.         }
  56.         u = base64_decode(d)
  57.     }
  58.     return u
  59. };

  60. function jandan_load_img(b) {
  61.     var d = $(b);
  62.     var f = d.next("span.img-hash");
  63.     var e = f.text();
  64.     f.remove();
  65.     var c = jd82tylpAK1P0Tvmga2rljssRTRVhio67x(e, "Bd7a2II4A1V50tQ92EKDtvTIUxJ9Smvt");
  66.     var a = $('<a href="' + c.replace(/(\/\/\w+\.sinaimg\.cn\/)(\w+)(\/.+\.(gif|jpg|jpeg))/, "$1large$3") + '" target="_blank" class="view_img_link">[鏌ョ湅鍘熷浘]</a>');
  67.     d.before(a);
  68.     d.before("<br>");
  69.     d.removeAttr("onload");
  70.     d.attr("src", location.protocol + c.replace(/(\/\/\w+\.sinaimg\.cn\/)(\w+)(\/.+\.gif)/, "$1thumb180$3"));
  71.     if (/\.gif$/.test(c)) {
  72.         d.attr("org_src", location.protocol + c);
  73.         b.onload = function() {
  74.             add_img_loading_mask(this, load_sina_gif)
  75.         }
  76.     }
  77. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-14 22:49:52 | 显示全部楼层
wongyusing 发表于 2018-10-14 22:24
教教我嘛,怎么获取下面代码的16进制md5加密函数啊??

不会啊兄弟,我就初学者一枚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 23:07:14 | 显示全部楼层
923204485 发表于 2018-10-14 22:49
不会啊兄弟,我就初学者一枚

你不会,怎么获取煎蛋网的图片的真实链接???
煎蛋网给你的源代码中,会有一个哈希值
上面的代码就是用来解析这个哈希值。  
根据密文用了字符拼接,再通过16进制的md5进行解码  
最终得到图片的真实链接。  

即使你得到了真实链接,你还要从js获取的hm.gif&xxxxxxxxxxxxxxxxxxxxxxx 文件中获取图片的请求头,曲奇、parems参数。  
来请求图片。  
保存图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-15 11:39:53 | 显示全部楼层
楼主可以参看我写的博客:https://fanfanblog.cn/157.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-15 11:40:33 | 显示全部楼层
wongyusing 发表于 2018-10-14 23:07
你不会,怎么获取煎蛋网的图片的真实链接???
煎蛋网给你的源代码中,会有一个哈希值
上面的代码就是 ...

可以参看我写的博客:https://fanfanblog.cn/157.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-15 12:42:21 | 显示全部楼层
零度非安全 发表于 2018-10-15 11:39
楼主可以参看我写的博客:https://fanfanblog.cn/157.html

好的,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-15 12:58:40 | 显示全部楼层
零度非安全 发表于 2018-10-15 11:40
可以参看我写的博客:https://fanfanblog.cn/157.html

看了一下,发现我个人的问题是不会调用md5这个函数。  
因为我是在node.js哪里测试。  
这js代码需要调用这个hex_md5函数。  
不知道从那个包来调用,那问题来了。  
如果我想在node.js调用这个16进制md5要在哪里调用呢??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-15 13:05:37 | 显示全部楼层

看不懂啊,兄弟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 18:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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