python实现爬虫下载漫画示例
代码如下:
#!/usr/bin/python3.2
import os,socket
import urllib
import urllib.request,threading,time
import re,sys
global manhuaweb,weburl,floder,chapterbegin,currentthreadnum,threadcount,mutex,mutex2
weburl=''
floder=''
chapterbegin=0
currentthreadnum=0
threadcount=6
if len(sys.argv)>=3:
weburl=sys.argv[1]
floder=sys.argv[2]
else:
print("usag: downloadmanhua weburl floder chapterbegin=0 threadnnum=6")
sys.exit(0)
if len(sys.argv)>=4:
chapterbegin=int(sys.argv[3])
if len(sys.argv)>=5:
threadcount=(int)(sys.argv[4])
def jin(i,jinzhi):
Finalans=""
answer=i%jinzhi
i=int(i/jinzhi)
if answer>9:
Finalans= ""
Finalans=""
Finalans chr(ord('a') (answer-10))
else:
Finalans=finalans str(answer)
如果我!=0 :
Finalans=jin(i,jinzhi) Finalans
return Finalans
def urlparse(p,a,c,k):
d={}
e=lambda c: jin( c,36)
如果 1:
而 c:
c=c-1
如果不是 k[c]:
d[jin(c,36)]=jin(c ,36) d [jin(c,36)]=k[c]
k=[lambda e:d[e]]
e=lambda c:'\w '
c=1
newstr= ""
while c:
c=c-1
if k[c]:
对于范围内的 i(0,len(p )):
对于我
tempi=ord(tempi)
如果 tempi>=ord('a') 且 tempi 来自 new (str) ( tempi) elif tempi>=ord('0') 和 tempi newstr =d[chr(tempi)]
其他:
一个
新闻的新闻() 🎜> return newstr
def meipower(s):
p=re.compile(r"(?=}\().*",re.IGNORECASE)
s=p.findall(s)
s=s[0]
s=s[0:(len(s)-19)]
par=s.split(',')
par[3]=par[3][1:len(par[3])]
answer=par[3].split('|')
chapterpath=urlparse(par[0],int(par[1]),int(par[2]),answer)
allurl=re.findall('imgpath=[^;]*',chapterpath)[0]
allurl=allurl[10:(len(allurl)-2)]
return allurl
def pictofile(weburl,filename,loop=100):
if loop<0:
print('can\'t download the picture %s'%weburl)
return
loop=loop-1
if os.path.exists(filename):
return
try:
url=urllib.request.urlopen(weburl)
data=url.read()
if len(data)<2048:
url.close()
pictofile(weburl,filename,loop)
else:
print('download from %s name is %s\n'%(weburl,filename))
myfile=open('%s'%filename,'wb')
myfile.write(data)
myfile.close()
url.close();
except socket.timeout:
print('timeout')
pictofile(weburl,filename,loop)
except Exception as e:
print('error',e)
pictofile(weburl,filename,loop)
finally:
pass
def downloadpic(url,loadpicdir,num):
#download the all url picture to loadpicdir
global currentthreadnum,mutex,mutex2
mymode=re.compile(r'[0-9a-z.]*\Z')
try:
mutex2.acquire()
os.chdir(loadpicdir)
mutex2.release()
except:
print("can't open the floder %s will be create"%loadpicdir)
try:
if(mutex2.locked()):
os.mkdir(loadpicdir)
os.chdir(loadpicdir)
mutex2.release()
print('create floder succeed')
except:
print("can't create floder %s"%loadpicdir)
if(mutex.acquire()):
mutex.release()
quit(0)
name=mymode.findall(url)
filename='manhua'+name[0]
pictofile(url,loadpicdir+'//'+str(num)+'-'+filename)
mutex.acquire()
currentthreadnum=currentthreadnum-1
mutex.release()
def downloadchapter(url,loadpicdir,num,begin=0):
global manhuaweb,threadcount,currentthreadnum,mutex
print(manhuaweb+url)
webdata=urllib.request.urlopen(manhuaweb+url).read()
webdata=webdata.decode('UTF-8')
chaptername=re.findall(r'
chaptername=chaptername[7:len(chaptername)]
webscrip=re.findall(r'eval.*[^<>]',webdata)
chapterurl=meispower(webscrip[0]);
chapterurl='http://mhimg.ali213.net'+chapterurl
for i in range(begin,num):
try:
while(currentthreadnum>=threadcount):
time.sleep(0.5)
mutex.acquire()
currentthreadnum=currentthreadnum+1
mutex.release()
threading.Thread(target=downloadpic,args=(r'%s%d.jpg'%(chapterurl,i),loadpicdir+chaptername,num)).start()
except socket.error:
mutex.acquire()
i=i-1
currentthreadnum=currentthreadnum-1
mutex.release()
except Exception as error:
print(error,'break')
print('download chapter %d of picture make a error'%i)
Break
if __name__=='__main__':
manhuaweb=r'http://manhua.ali213.net'
socket.setdefaulttimeout(60.0)
mutex=threading.Lock()
mutex2=threading.Lock()
webfile=urllib.request.urlopen(weburl)
webdata=webfile.read();
webdata=webdata.decode('UTF-8')
meshmode=re.compile (r'
meshdata=meshmode.findall(webdata)[0]
indexmode=re.compile(r'([0 -9]*页)')
indexdata=indexmode.findall(meshdata)
picurlmode=re.compile(r'/comic/[0-9/]*.html')
picurldata=picurlmode.findall(meshdata)
Chapterlength=len(picurldata)
nummode=re.compile(r'[d] ')
i=chapterbegin
while i
downloadchapter(manhuachapter,floder,int(nummode) .findall(indexdata[章节长度-i-1] )[0]))
i=i 1

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

番茄小说软件是一款非常丰富的阅读平台,除了提供海量的小说资源外,还涵盖了各种漫画资源。如果你对漫画感兴趣,那么番茄小说绝对是一个不容错过的选择。这里的漫画种类繁多,实时更新,无论是你喜欢的作者还是作品,都能精准地查找,那么究竟该如何在番茄小说看漫画呢,这篇教程攻略就将为大家带来详细的步骤介绍,希望能帮助到各位有需要的小伙伴们。番茄小说怎么看漫画?1、打开番茄小说APP。2、点击漫画。3、选择喜欢的漫画点击进入观看。4、向下滑动即可阅读。

学习Python爬虫的时间因人而异,取决于个人的学习能力、学习方法、学习时间和经验等因素。学习Python爬虫不仅仅是学习技术本身,还需要具备良好的信息搜集能力、问题解决能力和团队协作能力。通过不断学习和实践,您将逐渐成长为一名优秀的Python爬虫开发者。

在爬虫开发中,处理Cookie常常是必不可少的一环。Cookie作为HTTP中的一种状态管理机制,通常被用来记录用户的登录信息和行为,是爬虫处理用户验证和保持登录状态的关键。在PHP爬虫开发中,处理Cookie需要掌握一些技巧和留意一些坑点。下面我们详细介绍如何在PHP中处理Cookie。一、如何获取Cookie在使用PHP编写

PHP爬虫类的常见问题解析与解决方案引言:随着互联网的快速发展,网络数据的获取成为了各个领域中的重要环节。而PHP作为一门广泛应用的脚本语言,其在数据获取方面有着强大的能力,其中一种常用的技术就是爬虫。然而,在开发和使用PHP爬虫类的过程中,我们常常会遇到一些问题。本文将分析并给出这些问题的解决方案,并提供相应的代码示例。一、无法正确解析目标网页的数据问题描

Java爬虫实战:如何高效抓取网页数据引言:随着互联网的快速发展,大量有价值的数据被存储在各种网页中。而要获取这些数据,往往需要手动访问每个网页并逐一提取信息,这无疑是一项繁琐且耗时的工作。为了解决这个问题,人们开发了各种爬虫工具,其中Java爬虫是最常用的之一。本文将带领读者了解如何使用Java编写高效的网页爬虫,并通过具体代码示例来展示实践。一、爬虫的基

漫画在软件动漫之家中可以自己搜索阅读,有些用户还不太清楚动漫之家为什么看不了漫画,漫画版权被其他app购买了就无法观看了,接下来就是小编为用户带来的看不了漫画原因的介绍,感兴趣的用户快来一起看看吧!动漫之家为什么看不了漫画答:版权变更就无法收看了详情介绍:1、在软件中搜索想看的漫画。2、不会出现该漫画内容,可能会呈现二创或直接搜不到。3、可能被其他软件购买版权了,例如只能在b站的漫画中心中阅读。4、因为版权变更而导致部分漫画就看不了,只能在拥有版权的软件上阅读。

股票市场一直是一个备受关注的话题。股票每天的涨跌幅和变化,直接影响着投资者的决策。而想要了解股票市场的最新动态,就需要及时获取并分析股票信息。传统的方法是手动打开各大财经网站逐一查看股票数据,这个方法显然过于繁琐且效率低下。而在此时,爬虫成为了一种非常高效和自动化的解决方案。接下来,我们将实战演示如何使用PHP编写一个简单的股票爬虫程序,用于获取股票数据。准

实用技巧分享:快速学会Java爬虫抓取网页数据的方法引言:在当今信息时代,我们每天都与大量的网页数据打交道,而其中很多数据可能正是我们所需要的。为了方便快速获取到这些数据,学会使用爬虫技术成为一项必备技能。本文将分享一种快速学会Java爬虫抓取网页数据的方法,并附上具体的代码示例,帮助读者快速掌握这项实用技巧。一、准备工作在开始编写爬虫之前,我们需要准备以下
