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+chr(ord('a')+(answer-10))
else:
finalans=finalans+str(answer)
if i!=0:
finalans=jin(i,jinzhi)+finalans
return finalans
def urlparse(p,a,c,k):
d={}
e=lambda c: jin(c,36)
if 1:
while c:
c=c-1
if not k[c]:
d[jin(c,36)]=jin(c,36)
else:
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]:
for i in range(0,len(p)):
tempi=p[i]
tempi=ord(tempi)
if tempi>=ord('a') and tempi newstr+=d[chr(tempi)]
elif tempi>=ord('0') and tempi newstr+=d[chr(tempi)]
else:
newstr+=chr(tempi)
return newstr
def meispower(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 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) 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[chapterlength-i-1])[0]))
i=i+1

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Tomato Novel ソフトウェアは、非常に豊富な読書プラットフォームであり、多数の小説リソースを提供するだけでなく、さまざまな漫画リソースもカバーしています。コミックに興味があるなら、トマト ノベルズは間違いなく見逃せない選択肢です。ここにはさまざまな種類の漫画があり、リアルタイムで更新されます。好みの作者や作品にかかわらず、正確に見つけることができます。トマトノベルで漫画を読む方法は? このチュートリアルガイドでは、困っている皆さんのお役に立てれば幸いです。トマトの小説漫画を読むには? 1.トマトノベルズアプリを開きます。 2. コミックをクリックします。 3. 好きなコミックを選択し、クリックして視聴します。 4. 下にスワイプして読んでください。

Python クローラーの学習にかかる時間は人によって異なり、個人の学習能力、学習方法、学習時間、経験などの要因によって異なります。 Python クローラーを学習するには、テクノロジー自体を学習するだけでなく、優れた情報収集スキル、問題解決スキル、チームワーク スキルも必要です。継続的な学習と実践を通じて、徐々に優れた Python クローラー開発者に成長していきます。

PHP クローラーの一般的な問題と解決策の分析 はじめに: インターネットの急速な発展に伴い、ネットワーク データの取得はさまざまな分野で重要なリンクになっています。 PHP は広く使用されているスクリプト言語であり、データ取得において強力な機能を備えており、よく使用されるテクノロジの 1 つがクローラーです。ただし、PHP クローラーを開発および使用する過程で、いくつかの問題に遭遇することがよくあります。この記事では、これらの問題を分析して解決策を示し、対応するコード例を示します。 1. 対象のWebページのデータが正しく解析できない問題の説明。

クローラー開発では、Cookie の処理が重要な部分となることがよくあります。 HTTP の状態管理メカニズムとして、Cookie は通常、ユーザーのログイン情報と行動を記録するために使用され、クローラーがユーザー認証を処理し、ログイン ステータスを維持するための鍵となります。 PHP クローラー開発では、Cookie を処理するには、いくつかのスキルを習得し、いくつかの落とし穴に注意する必要があります。ここでは、PHP での Cookie の扱い方について詳しく説明します。 1. PHP記述時のCookieの取得方法

アニメホームというソフトでは自分で漫画を検索して読むことができますが、アニメホームで漫画が読めない理由が分からないというユーザーもいますが、他のアプリで漫画の著作権を購入している場合は読むことができません。次に編集者がユーザーに読めない漫画を持ってくる理由を紹介、興味のあるユーザーは見に来てください!アニメホームで漫画が見れないのはなぜですか? 回答: 著作権変更のため漫画が見れません 詳細: 1. ソフトウェア内で読みたい漫画を検索します。 2. 漫画の内容は表示されません。二次創作であるか、直接見つけることができません。 3. b駅のコミックセンターでしか読めないなど、他のソフトに著作権が購入されている可能性があります。 4. 著作権の変更により、一部の漫画は利用できなくなり、著作権で保護されたソフトウェアでのみ読むことができます。

Java クローラーの実践: Web ページ データを効率的にクロールする方法 はじめに: インターネットの急速な発展に伴い、大量の貴重なデータがさまざまな Web ページに保存されています。このデータを取得するには、多くの場合、各 Web ページに手動でアクセスして情報を 1 つずつ抽出する必要がありますが、これは間違いなく退屈で時間のかかる作業です。この問題を解決するために、人々はさまざまなクローラー ツールを開発しましたが、その中で Java クローラーは最もよく使用されているツールの 1 つです。この記事は、Java を使用して効率的な Web クローラーを作成する方法を読者に理解させ、具体的なコード例を通じてその実践方法を示します。 1. 爬虫類の根元

フィルム市場が拡大発展し続けるにつれて、フィルムに対する人々の需要もますます高まっています。映画の評価に関しては、Douban Film Critics が常により権威があり、人気のある選択肢です。場合によっては、Douban 映画レビューに対して特定の分析と処理を実行する必要があるため、クローラー テクノロジーを使用して Douban 映画レビューに関する情報を取得する必要があります。この記事では、PHP を使用して Douban の映画レビューをクロールする方法のチュートリアルを紹介します。参考にしてください。 Douban 映画のページ アドレスを取得する Douban 映画のレビューをクロールする前に、Douban 映画のページ アドレスを取得する必要があります。わかりました

インターネット技術の急速な発展に伴い、Web アプリケーションは私たちの日常の仕事や生活でますます使用されるようになりました。 Web アプリケーション開発のプロセスにおいて、Web ページ データのクロールは非常に重要なタスクです。市場には多くの Web スクレイピング ツールがありますが、これらのツールはあまり効率的ではありません。 Web ページデータのクローリングの効率を向上させるために、PHP と Selenium を組み合わせて使用できます。まず、PHP と Selenium とは何かを理解する必要があります。 PHPは強力です
