鱼C论坛

 找回密码
 立即注册
查看: 2718|回复: 6

[分享] python实现抓取煎蛋 网妹子图

[复制链接]
发表于 2019-12-25 15:12:17 | 显示全部楼层 |阅读模式

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

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

x
最新抓取妹子图python代码!
看了一遍小甲鱼视频, 发现现在煎蛋网网站源码有有变,便将代码改进,亲测可用.
可以设置保存文文件夹,抓取页数..

代码如下:

                               
登录/注册后可看大图



import urllib.request
import os

def get_page(url):
    '''抓取网页地址(从当前url中的'下一页'开始)
    返回一个url'''
    html = url_open(url).decode('utf-8')
    a = html.find('current-comment-page')
    a = html.find('jandan.net/ooxx/',a)
    b = html.find('#comments',a) + 9
   
    return 'http://' + html[a:b]
   

def find_imgs(url):
    '''获取当前url中的jpg源地址,返回一个列表,包含了当前页面的几乎所有jpg'''
    img_addrs = []
    html = url_open(url).decode('utf-8')
    a = 0
    b = 0
    while True:
        a = html.find('li id="comment',a)
        if a == -1:
            break
        a = html.find('img src=',a) + 11
        if a == 10:
            break
        b = html.find('.jpg',a, a + 255) + 4
        if b == 3:
            break
        img_addrs.append(html[a:b])
        a = b
    print(img_addrs)
    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('http://' + each)
            f.write(img)

def url_open(url):
    '''打开url,返回未解码的html'''
    req = urllib.request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0')
    '''
    如需代理则uncomment
    proxies = []
    proxy = random.choice(proxies)
    proxy_support = urllib.request.ProxyHandler({'http':proxy})
    opener = urllib.request.build_opener(proxy_support)
    urllib.request.install_opener(opener)
   
    '''
    response = urllib.request.urlopen(req)
    html = response.read()

    return html

def download_mm(folder='ooxx',pages = 10):
    os.mkdir(folder)
    os.chdir(folder)
   
    url = 'http://jandan.net/ooxx/'
    next_page = get_page(url)
    for page in range(pages):
        print(next_page)
        save_imgs(folder, find_imgs(next_page))
        next_page = get_page(next_page)

if __name__ == '__main__' :
    download_mm('ooxx2',pages=5)


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

使用道具 举报

 楼主| 发表于 2019-12-30 10:49:13 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-20 16:28:38 | 显示全部楼层
为什么运行之后显示
D:\PycharmProjects\untitled1\venv\Scripts\python.exe D:/PycharmProjects/untitled1/venv/pygame.py
No pyvenv.cfg file

进程已结束,退出代码106
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-1 15:41:46 | 显示全部楼层
seslovelm 发表于 2020-1-20 16:28
为什么运行之后显示
D:\PycharmProjects%untitled1\venv\Scripts\python.exe D:/PycharmProjects/untitled ...

直接用idle运行即可.或者新建pycharm项目,将代码粘贴到一个py文件中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-23 22:01:40 | 显示全部楼层
精彩,精彩!!!!太牛逼了,为什么还有人去编译对应页码的字典,我一看到你这个帖子就觉得茅塞顿开,柳暗花明,差一点走上歧路了(指页码对应编译字典)哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-25 14:53:40 | 显示全部楼层
对了发现一个小小的问题,就是你这个是从第二页开始下载的,就是主程序里面这个next_page初始值应该就是url。否则你初始值就是第二页,第一页的图片爬不下来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-2 11:58:10 | 显示全部楼层
顶,实现了,好激动
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 13:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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