Pythonはマイクロブログに登録して顔の袋をよじ登ります。


一、開発ツール
*Python****バージョン:*3.6.4
関連モジュール:
Decrypt Loginモジュール;
argparseモジュール;
requestsモジュール
prettytableモジュール;
tqdmモジュール
lxmlモジュール
ファンク.useragentモジュール;
いくつかのPythonのモジュールを持っています。
二、環境構築
Pythonをインストールして環境変数に追加し、pipに必要な関連モジュールをインストールすればいいです。
三、原理紹介
もともとこの爬虫類はpythonの非同期爬虫類の一例として考えていましたが、昨日コードを書き終わってテストをしました。結果は私のマイクロブログのアカウントとipが直接封鎖されました。
それから、Googleに行って、他の人の書いた異歩爬虫類教程を調べてみました。テスト用のものは全部アンチ爬虫剤のないウェブサイトです。
そこで今日はコードを変えました。とりあえず普通のミニブログの小さな爬虫類を全部使ってください。
本題に戻ると、以前のマイクロブログの爬虫類と似ています。私達はやはり先にDecryptLoginを利用してマイクロブログのアカウントのアナログ登録を行います。

'''    '''
@staticmethod
def login(username, password):
  lg = login.Login()
  _, session = lg.weibo(username, password, 'mobile')
  return session
使用者に目標のミニブログユーザのIDを入力させる。

user_id = input('       ID(  : 2168613091) ――> ')
ミニブログユーザーIDはここで見られます。
图片
ユーザーが入力したマイクロブログのユーザーIDによって、下記の2つのリンクにアクセスします。

url = f'https://weibo.cn/{user_id}'
url = f'https://weibo.cn/{user_id}/info'
その後、xpathを用いてユーザの基本情報を抽出する。
图片
图片
これらの情報を印刷して、ユーザーに自分で入力したマイクロブログユーザーIDが正しいかどうかを確認させます。

tb = prettytable.PrettyTable()
tb.field_names = ['   ', '    ', '     ', '    ', '    ']
tb.add_row([nickname, num_followings, num_followers, num_wbs, num_wb_pages])
print('         :')
print(tb)
is_download = input('               ?(y/n,   : y) ――> ')
もし間違いがないなら、そのユーザーが送ったすべてのマイクロブログの中の写真を登り始めます。

'''      '''
def __downloadImages(self, userinfos, savedir):
  #        
  num_wbs = userinfos.get('num_wbs')
  user_id = userinfos.get('user_id')
  num_wb_pages = userinfos.get('num_wb_pages')
  #            
  page_block_size = random.randint(1, 5)
  page_block_count = 0
  for page in tqdm(range(1, num_wb_pages+1)):
    # --      
    response = self.session.get(f'https://weibo.cn/{user_id}?page={page}', headers=self.headers)
    image_urls = self.__extractImageUrls(response)
    # --    
    for url in image_urls:
      try:
        res = requests.get(url, headers={'user-agent': self.ua.random}, stream=True)
        with open(os.path.join(savedir, url.split('/')[-1]), 'wb') as fp:
          for chunk in res.iter_content(chunk_size=32):
            fp.write(chunk)
        print('[INFO]: Download an image from: ', url)
      except:
        pass
    # --            and    ,            
    page_block_count += 1
    if page_block_count % page_block_size == 0:
      time.sleep(random.randint(6, 12))
      page_block_size = random.randint(1, 5)
      page_block_count = 0
ここで爬虫類を避けるためにBAの措置は主に以下の点があります。
  • はnページのデータを登るごとにx秒を停止し、nはランダムに生成され、nは常に変化しています。xもランダムに生成され、xもずっと変化しています。
  • は、画像をダウンロードする際に、ランダムなuaを使用し、ログイン後のsessionを使用しないで、画像リンクを要求して、この画像をダウンロードする。
  • 戻ってきた微博ページの内容から写真リンクを抽出する場合、注意が必要です。
  • は、ミニブログを転送するミニブログIDとオリジナルミニブログのミニブログIDの抽出方法に対して異なる。
  • 枚の写真だけのミニブログと複数の画像があるミニブログから画像リンクを抽出する方法は違っています。
  • ピクチャリンクの抽出がエラーになり、httpがttpになってしまうことがありますので、抽出したピクチャリンクを後処理してからこれらのリンクを要求して画像をダウンロードします。
  • 大体の考えはこのようにしています。あまり難しくないので、xpathで必要な情報を抽出すればいいです。ですから、ざっと紹介してください。Tシャツ。T
    運転方式:
    
    python weiboEmoji.py --username     --password   
    ここでPythonについて、マイクロブログにログインして、顔のカバンを取るというシミュレーションの記事を紹介します。これに関連して、Pythonさんは微博の表情のカバンの内容を紹介します。以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。