文章

看漫画的爬虫--动画截图网--限速1秒

2020-07-26 13:25:36 星期日
问题已经解决,源码更新在最下面。

2020-07-26 10:04:35 星期日 发现bug,待修复

2020-07-26 10:00:54 星期日
发现对方网站已修复了,目前程序正常下载了

2020-07-18 19:04:54 星期六
一堆烂代码写完了,可是网站是真的卡,爬的很多图片都是404.
exe我就不打包发给大家了,因为实在很卡,会自己用程序的可以自己玩一下,源码在最下面


2020-07-18 06:20:11 星期六
今天发现对方服务器由湖南长沙搬迁到了腾讯云……做我的邻居了呀。
站长挺辛苦的,目前发现其网站访问速度依然很缓慢
我说站长其实也挺拧巴的,估计也希望做好这个站,因为图片都是本地化的,压根没有使用图床。
这得要多大的硬盘和多高的流量支撑呀
网站页面很长,却没有使用Ajax

既然大家都那么喜欢,干脆写一个专门看漫画用的爬虫
信息来源网友,看漫画的图片来自 https://www.acgimage.com/
这个网站可以看漫画,但是网络很慢,而且点击鼠标很麻烦
所以。。。。
等吧

import requests,re,time,os
from lxml import etree
#coding:utf-8
os.system('title 动画截图网爬虫(www.acgimage.com) @小伍的游乐场-www.5yang.cc')
downpath = '动画截图/'
if not os.path.exists(downpath):
    os.makedirs(downpath)
names = []
url = []
urls = []
maxurl = []
tujiurl = []
tujiurls = []
#拼接首页的url
def pinjie():
    for url1 in url:
        url1 = 'https://www.acgimage.com' + url1
        urls.append(url1)
    # print(urls)



def wordline(geturl):
    r = requests.get(geturl).text
    html = etree.HTML(r)
    name = html.xpath('//*[@id="section"]/div/div[1]/div[1]/img/@alt')
    print('您进入的章节是:',name[0])
    print('动画简介:')
    jianjie = html.xpath('//div[@class="AnimeSummary"]/div/p/text()')
    for i in jianjie:
        print(i)
    tujiurl = html.xpath('//*[@id="section"]/div/div[4]/div/a/@href')
    for url in tujiurl:
        url = 'https://www.acgimage.com/' + url
        tujiurls.append(url)

def allpageone():
    for url in tujiurls:
        r = requests.get(url).text
        maxpage = re.findall('<a href=".*?page=(.*?)">>></a>',r)[0]#取得最大页码
        # print(maxpage)
        html = etree.HTML(r)
        url1 = html.xpath('//*[@id="section"]/div/div[1]/div[3]/div/a/@href')#取得这个页面的所有url
        for i in range(1,int(maxpage)):
            url = url + f'?page={i}'
            r = requests.get(url).text
            html = etree.HTML(r)
            url1 = html.xpath('//*[@id="section"]/div/div[1]/div[3]/div/a/@href')#取得这个页面的所有url
            for url2 in url1:
                url2 = 'https://www.acgimage.com/' + url2
                maxurl.append(url2)
        # print(maxurl)


#访问所有图集的第一个页面进行下载
def down():
    for url in maxurl:
        r = requests.get(url).text
        try:
            picurl = re.findall('<a class="btn btn-primary btn-sm" href="(.*?)"',r)[0]
        except:
            pass
        html = etree.HTML(r)
        picname = html.xpath('//*[@id="shotImg"]/@alt')[0]
        picname = picname.replace(' ','')
        picname = picname.replace('~','')
        picname = picname.replace('!','')
        picname = picname.replace('.','')
        picname = picname.replace('”','')
        picname = picname.replace('“','')
        picname = picname.replace(',','')
        picname = picname.replace('♬','')
        picname = picname.replace('。','')
        picname = picname.replace('?','')
        picname = picname.replace('?','')
        picname = picname.replace('!','')
        picname = picname.replace('=','')
        picname = picname.replace('(','')
        picname = picname.replace(')','')
        picname = picname.replace(' ','')
        picname = picname.replace('?','')
        ss = requests.get(picurl,timeout = (20,20))
        with open(f'{downpath}/{picname}.jpg','wb') as f:
            f.write(ss.content) 
            print(picname,'下载完成!')
        time.sleep(1)
    print('所有要求下载完成!')



if __name__ == "__main__":

    #获取该页面下所有图片名称及url,然后由用户选定,进入该图集
    url = 'https://www.acgimage.com/anime'
    r = requests.get(url).text
    html = etree.HTML(r)
    names = html.xpath('//*[@id="section"]/div/div[2]/div/a/@title')
    url = html.xpath('//*[@id="section"]/div/div[2]/div/a/@href')
    pinjie()
    for x in range(len(names)):
        print(x,names[x])
    num = int(input('请问你要下载第几个图集:'))
    geturl = urls[num]
    wordline(geturl)
    allpageone()
    down()
    input('======按任意键关闭程序======')

原文来自:看漫画的爬虫--动画截图网--限速1秒,尊重自己,尊重每一个人;转发请注明来源!
0 0

发表评论