鱼C论坛

 找回密码
 立即注册
查看: 1275|回复: 23

[已解决]【求助】煎蛋爬妹子图程序出现不知名错误

[复制链接]
发表于 2020-8-11 18:24:38 | 显示全部楼层 |阅读模式

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

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

x
import urllib.request
import os
import base64
import re

def url_open(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36')
    response = urllib.request.urlopen(req)
    html = response.read()
    print(html)
   
    return html

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

    a = r'<span class="current-comment-page">\[(\d+)\]</span>'
    page_list = re.findall(a,html)

    for each in page_list:
        t = each

    return t

      
def base_num(page_num):
    times = '20200811-' + str(page_num)
    s = times.encode('utf-8')
    sw = base64.b64encode(s)
    str_sw = str(sw)
    string = str_sw.split("'")[-1]
    print (string)
    return string


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


    a = r'<img src="([^"]+\.jpg)"'
    b = re.findall(a,html)
   
    if not len(b):
        pic_url_list.append(b)

    for each in pic_url_list:
        print(each)

        
def save_pic(folder, pic_url):
    pass

def download_mm(folder = 'mm', pages = 10):
    #创建一个文件夹
    os.mkdir(folder)
    os.chdir(folder)

    url = 'http://jandan.net/ooxx/'
    #获取页码
    page_num = int(get_page(url))

    for i in range(pages):
        page_num -=i
        #base64加密
        x = base_num(page_num)
        #获取页码地址
        page_url = url + x + '#comments'
        #获取图片具体地址并保存成列表
        pic_url = find_pic_url(page_url)
        save_pic(folder, pic_url)

        
if __name__ == '__main__':
    download_mm()


我这个到底哪里出错我也拿不准,求大神
最佳答案
2020-8-15 11:22:56
本帖最后由 suchocolate 于 2020-8-15 11:53 编辑

不用xpath或bs太低效了
import requests
from lxml import etree
import os


def ck_dir():
    # Please fill in the name of the path where you want to save the images
    pic_dir = 'mm'
    if not os.path.exists(pic_dir):
        os.mkdir(pic_dir)
    os.chdir(pic_dir)


def get_pic_url(act_url):
    r = requests.get(act_url, headers=headers)
    html = etree.HTML(r.text)
    # pic list
    result = html.xpath('//img/@src')
    # last pic is not mm pic
    result.pop()
    # next page url
    act_nx_pg = html.xpath('//a[contains(text(),"99")]/@href')[zxsq-anti-bbcode-0]
    return result, act_nx_pg


def main():
    # pic counter
    n = 1
    # check pic directory
    ck_dir()
    # pic url list
    pic_list = []
    # next page url
    nx_pg_url = ''
    # get pics urls
    for item in range(100, 98, -1):
        if item == 100:
            pic_url, nx_pg = get_pic_url(url)
        else:
            pic_url, nx_pg = get_pic_url(nx_pg_url)
        nx_pg_url = f'{url}/{nx_pg}#comments'
        pic_list.extend(pic_url)
    # download pics
    for item in pic_list:
        r = requests.get('http:' + item, headers=headers)
        pic_name = item.split('/')[-1]
        with open(pic_name, 'wb') as f:
            f.write(r.content)
            print(f'{pic_name} has been downloaded. total number: {n}')
            n = n + 1


if __name__ == '__main__':
    # global variables
    url = 'http://jandan.net/ooxx'
    headers = {'User-agent': 'firefox'}
    # main func
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-11 18:29:04 | 显示全部楼层
报错信息是啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-11 18:34:36 | 显示全部楼层
煎蛋的妹子图还有???
弹幕上都说煎蛋的图没了……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-11 18:35:48 | 显示全部楼层


是因为你没有把创建的文件夹删除吧,把你代码下 mm 文件夹删除即可,然后代码就正常运行了


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

使用道具 举报

 楼主| 发表于 2020-8-11 20:26:38 | 显示全部楼层
Twilight6 发表于 2020-8-11 18:35
是因为你没有把创建的文件夹删除吧,把你代码下 mm 文件夹删除即可,然后代码就正常运行了

不是,我知道这个错误 它一直刷新Squeezed text (884lines)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-11 20:27:54 | 显示全部楼层

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

使用道具 举报

发表于 2020-8-11 20:29:22 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2020-8-11 20:35:57 | 显示全部楼层
weiter 发表于 2020-8-11 18:34
煎蛋的妹子图还有???
弹幕上都说煎蛋的图没了……

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

使用道具 举报

 楼主| 发表于 2020-8-11 20:36:49 | 显示全部楼层

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

使用道具 举报

发表于 2020-8-11 21:17:05 | 显示全部楼层
import urllib.request
import os
import base64
import re


def url_open(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent',
                   'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36')
    response = urllib.request.urlopen(req)
    html = response.read()
    #print(html)

    return html


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

    a = r'<span class="current-comment-page">\[(\d+)\]</span>'
    page_list = re.findall(a, html)

    for each in page_list:
        t = each

    return t


def base_num(page_num):
    times = '20200811-' + str(page_num)
    s = times.encode('utf-8')
    sw = base64.b64encode(s)
    str_sw = str(sw)
    string = str_sw.split("'")[-1]
    print(string)
    return string


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

    a = r'<img src="([^"]+\.jpg)"'
    b = re.findall(a, html)

    if not len(b):
        pic_url_list.append(b)

    for each in pic_url_list:
        print(each)


def save_pic(folder, pic_url):
    pass


def download_mm(folder='mm', pages=10):
    # 创建一个文件夹
    os.mkdir(folder)
    os.chdir(folder)

    url = 'http://jandan.net/ooxx/'
    # 获取页码
    page_num = int(get_page(url))

    for i in range(pages):
        page_num -= i
        # base64加密
        x = base_num(page_num)
        # 获取页码地址
        page_url = url + x + '#comments'
        # 获取图片具体地址并保存成列表
        pic_url = find_pic_url(page_url)
        save_pic(folder, pic_url)


if __name__ == '__main__':
    download_mm()
看起来,你的代码没完成,程序没问题,继续写吧(已修改)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-11 21:23:23 | 显示全部楼层
1q23w31 发表于 2020-8-11 21:17
看起来,你的代码没完成,程序没问题,继续写吧(已修改)

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

使用道具 举报

 楼主| 发表于 2020-8-11 21:31:22 | 显示全部楼层
1q23w31 发表于 2020-8-11 21:17
看起来,你的代码没完成,程序没问题,继续写吧(已修改)

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

使用道具 举报

发表于 2020-8-11 21:31:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-11 21:34:56 | 显示全部楼层

我写完了 还是没下载
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-11 21:35:30 | 显示全部楼层
二农戏猪` 发表于 2020-8-11 21:34
我写完了 还是没下载

把写完的发一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-11 21:35:59 | 显示全部楼层
1q23w31 发表于 2020-8-11 21:35
把写完的发一下

import urllib.request
import os
import base64
import re

def url_open(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36')
    response = urllib.request.urlopen(req)
    html = response.read()
    print(html)
   
    return html

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

    a = r'<span class="current-comment-page">\[(\d+)\]</span>'
    page_list = re.findall(a,html)

    for each in page_list:
        t = each

        return t

      
def base_num(page_num):
    times = '20200811-' + str(page_num)
    s = times.encode('utf-8')
    sw = base64.b64encode(s)
    str_sw = str(sw)
    string = str_sw.split("'")[-1]
   
    return string


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


    a = r'<img src="([^"]+\.jpg)"'
    b = re.findall(a,html)
   
    if not len(b):
        pic_url_list.append(b)

    return pic_url_list

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

def download_mm(folder = 'mm', pages = 10):
    #创建一个文件夹
    os.mkdir(folder)
    os.chdir(folder)

    url = 'http://jandan.net/ooxx/'
    #获取页码
    page_num = int(get_page(url))

    for i in range(pages):
        page_num -=i
        #base64加密
        x = base_num(page_num)
        #获取页码地址
        page_url = url + x + '#comments'
        #获取图片具体地址并保存成列表
        pic_url = find_pic_url(page_url)
        save_pic(folder, pic_url_list)

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

使用道具 举报

 楼主| 发表于 2020-8-11 21:41:19 | 显示全部楼层
1q23w31 发表于 2020-8-11 21:35
把写完的发一下

iimport urllib.request
import os
import base64
import re

def url_open(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36')
    response = urllib.request.urlopen(req)
    html = response.read()
    print(html)
   
    return html

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

    a = r'<span class="current-comment-page">\[(\d+)\]</span>'
    page_list = re.findall(a,html)

    for each in page_list:
        t = each

    return t

      
def base_num(page_num):
    times = '20200811-' + str(page_num)
    s = times.encode('utf-8')
    sw = base64.b64encode(s)
    str_sw = str(sw)
    string = str_sw.split("'")[-1]
   
    return string


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


    a = r'<img src="([^"]+\.jpg)"'
    b = re.findall(a,html)
   
    if not len(b):
        pic_url.append(b)

    return pic_url

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

def download_mm(folder = 'mm', pages = 10):
    #创建一个文件夹
    os.mkdir(folder)
    os.chdir(folder)

    url = 'http://jandan.net/ooxx/'
    #获取页码
    page_num = int(get_page(url))

    for i in range(pages):
        page_num -=i
        #base64加密
        x = base_num(page_num)
        #获取页码地址
        page_url = url + x + '#comments'
        #获取图片具体地址并保存成列表
        pic_url = find_pic_url(page_url)
        save_pic(folder, pic_url)

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

使用道具 举报

 楼主| 发表于 2020-8-11 21:43:21 | 显示全部楼层
import urllib.request
import os
import base64
import re

def url_open(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36')
    response = urllib.request.urlopen(req)
    html = response.read()
    print(html)
   
    return html

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

    a = r'<span class="current-comment-page">\[(\d+)\]</span>'
    page_list = re.findall(a,html)

    for each in page_list:
        t = each

    return t

      
def base_num(page_num):
    times = '20200811-' + str(page_num)
    s = times.encode('utf-8')
    sw = base64.b64encode(s)
    str_sw = str(sw)
    string = str_sw.split("'")[-1]
   
    return string


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


    a = r'<img src="([^"]+\.jpg)"'
    b = re.findall(a,html)
   
    if not len(b):
        pic_url.append(b)

    return pic_url

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

def download_mm(folder = 'mm', pages = 10):
    #创建一个文件夹
    os.mkdir(folder)
    os.chdir(folder)

    url = 'http://jandan.net/ooxx/'
    #获取页码
    page_num = int(get_page(url))

    for i in range(pages):
        page_num -=i
        #base64加密
        x = base_num(page_num)
        #获取页码地址
        page_url = url + x + '#comments'
        #获取图片具体地址并保存成列表
        pic_url = find_pic_url(page_url)
        save_pic(folder, pic_url)

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

使用道具 举报

 楼主| 发表于 2020-8-11 21:48:33 | 显示全部楼层
需要审核
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-11 21:50:25 | 显示全部楼层
1q23w31 发表于 2020-8-11 21:35
把写完的发一下
import urllib.request
import os
import base64
import re

def url_open(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36')
    response = urllib.request.urlopen(req)
    html = response.read()
    print(html)
    
    return html

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

    a = r'<span class="current-comment-page">\[(\d+)\]</span>'
    page_list = re.findall(a,html)

    for each in page_list:
        t = each

        return t

      
def base_num(page_num):
    times = '20200811-' + str(page_num)
    s = times.encode('utf-8')
    sw = base64.b64encode(s)
    str_sw = str(sw)
    string = str_sw.split("'")[-1]
    
    return string


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


    a = r'<img src="([^"]+\.jpg)"'
    b = re.findall(a,html)
    
    if not len(b):
        pic_url.append(b)

    return pic_url

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

def download_mm(folder = 'mm', pages = 10):
    #创建一个文件夹
    os.mkdir(folder)
    os.chdir(folder)

    url = 'http://jandan.net/ooxx/'
    #获取页码
    page_num = int(get_page(url))

    for i in range(pages):
        page_num -=i
        #base64加密
        x = base_num(page_num)
        #获取页码地址
        page_url = url + x + '#comments'
        #获取图片具体地址并保存成列表
        pic_url = find_pic_url(page_url)
        save_pic(folder, pic_url)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 11:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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