Python-ステーションのすべての写真をクロール

ターゲットは[** 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

Python-ステーションのすべての写真をクロール
pythonクローラーは何をクロールできますか
PYTHONを使用してニュース記事をクロールする方法
Python-ステーションのすべての写真をクロール
Pythonは写真の水平ステッチを実装しています
Pythonは画像の水平および垂直スプライシングを実現します
Python3.9の7つの機能
Pythonを学ぶためのいくつかのウェブサイトの推奨事項
Python2とPython3の違いの簡単な要約
Python描画|さまざまな台風経路の視覚化方法
pythonはどのように辞書のキーを呼び出しますか
pythonで番号のリストを理解する方法
Pythonは意味のある画像を生成します
Python構文の基本
Pythonの基本構文
Pythonの基礎知識(1)
pythonのPrettytableモジュール
09.Python3の共通モジュール
pythonで円の領域を見つける方法
Pythonで一般的に使用されるサードパーティライブラリの大規模なインベントリ