ターゲットは[** http://www.5442.com/meinv/ **](http://www.5442.com/meinv/)です
Linux以外で使用する必要がある場合は、コード内のパス記号を変更してください
#- *- coding:utf-8-*-import re
import urllib
import urllib2
import os
import chardet
import sys
'''
def get_html(url):#通常どおりWebコンテンツを取得する
try:
request = urllib2.Request(url,headers=ua_headers)
response = urllib2.urlopen(request)
html = response.read()return html
except:
print "コンテンツの取得に失敗しました"'''
def get_html(url):#Webコンテンツを取得するためのトランスコード
try:
request = urllib2.Request(url,headers=ua_headers)
data = urllib2.urlopen(request).read()
typeEncode = sys.getfilesystemencoding()
infoencode = chardet.detect(data).get('encoding','gb2312')#ウェブサイトのコードに従って、この行の「gb2312」を変更します
html = data.decode(infoencode,'ignore').encode(typeEncode)return html
except:
print "コンテンツの取得に失敗しました"
ua_headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36','Cookie':'AspxAutoDetectCookieSupport=1'}
url ="http://www.5442.com/meinv/"
########################################################
# まず、meinvページのすべてのタグリンクを取得します。次に、タグ名を使用して、対応するディレクトリを作成します。
########################################################
tag_code =get_html(url)
tag_egrep = r'href="(.*).*" class="'
tag_url_list = re.findall(tag_egrep, tag_code)
print
print "[V]meinvページのすべてのタグカテゴリのリンクを正常にクロールしました"
print tag_url_list##meinvページのすべてのリンクを印刷する
for tag_url in tag_url_list:try:
tag_dir_name = tag_url[24:-5]
# tag_mkpath ="C:\\Users\\Administrator\\Desktop\\Python-learn\\Photos\\"+ tag_dir_name
tag_mkpath ="Photos/"+ tag_dir_name
tag_mkdir = os.path.exists(tag_mkpath)
print
print "...タグの名前が正常に一致しました:"+ tag_dir_name
if not tag_mkdir:
os.makedirs(tag_mkpath)
print "...作成する%sディレクトリの成功----"%tag_dir_name
else:
print "...すでにこれ%sディレクトリ----"%tag_dir_name
except:
print "...[X]入手します%sリンクが失敗または作成されました%sフォルダが失敗しました[X]"%tag_dir_name
##################################
# 次に、取得したタグリンクを使用して、すべてのtzリンクを取得します。
##################################
try:
tz_code =get_html(tag_url)
tz_url_egrep = r'href="(.*).*" target="_blank" title="'
tz_url_list = re.findall(tz_url_egrep,tz_code)
print tz_url_list
for tz_url in tz_url_list:
print ".........現在の投稿へのリンク---"+tz_url
try:
xz_dir = tag_mkpath +".html"
urllib.urlretrieve(tag_url,xz_dir)
# tz_name_egrep = r'_blank" title="(.*?)">'
tz_name_egrep = r"<img alt='(.*?)' src"
tz_name_list = re.findall(tz_name_egrep, tz_code)
print tz_name_list
t=0
###############################################
# 次に、取得したタグリンクを使用して、すべてのtz名を取得します。そして、対応するディレクトリを作成します
###############################################
for x_tz_name in tz_name_list:
print ".........正常に一致"+x_tz_name
tz_mkpath = tag_mkpath +"/"+ x_tz_name
tz_mkdir = os.path.exists(tz_mkpath)if not tz_mkdir:
os.makedirs(tz_mkpath)
print ".........作成する%sディレクトリの成功"%x_tz_name
else:
print ".........既に%■このディレクトリ"%x_tz_name
###############################################
# 次に、取得したタグリンクを使用して、すべてのtzリンクを取得します。そして、対応するディレクトリを作成します
###############################################
xx =0while True :try:
ttz_url = tz_url_list[t]#各投稿を手動でループする
###########################
# 各投稿のN番目のページへのリンクを追加します
###########################
if xx ==0:
tz_HQ_url = ttz_url
else:
tz_hz_url = ttz_url[-5:]
tz_qz_url = ttz_url[:-5]+"_"
tz_HQ_url = tz_qz_url +str(xx)+ tz_hz_url
print "-------------------------------------------"+tz_HQ_url
#######################
# 現在のページのすべての画像リンクを取得します
#######################
img_code =get_html(tz_HQ_url)
img_url_egrep = r"src='(.*).*' alt=''"
img_url_list = re.findall(img_url_egrep,img_code)
img = img_url_list[0]try:
print "............正常にクロールしました%のすべての写真へのリンク"% x_tz_name
print "............[すべての写真へのリンク]"
print img_url_list
print "............%s%s画像リンク:%s"%(x_tz_name,xx,img)
img_name = tag_mkpath +"/"+x_tz_name +"/"+ img[-15:]
urllib.urlretrieve(img,img_name)#画像をダウンロード
print "...............画像は正常にダウンロードされました:"+img_name
print "========================================================="
print "========================================================="
print
except:
print "[X]写真のダウンロード中にエラーが発生しました。"
print "========================================================="
print "========================================================="
print
xx = xx +1
except:
print "while false"break
t=t+2
except:
print "クロール%の画像リンクに失敗しました!"%x_tz_name
##########################################################################
# 現在のループの実行後に対応するフォルダが作成されているかどうかを確認し、作成されている場合は、ループを終了して次のタグタグページを直接クロールします。
##########################################################################
if os.access(str(xz_dir), os.F_OK):breakelse:
pass
# スカムコードは部外者には十分ではありません
except:
print "クロール%投稿はsで失敗しました"%tag_dir_name
Recommended Posts