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('======按任意键关闭程序======')