John(筋肉)の備忘録的な何か

備忘録的な何かであり、進捗そのものでもあるよ!!怖い人は見ないで!

Python3でスクレイピング!!画像自動ダウンロード!!

皆さんこんにちは。John(筋肉)です。

最近、上司(先輩)であり、尊敬するいるやんさんに勉強会に連れて行っていただきました。

そこで学んだもので少し趣味をしたので、紹介したいと思います。

 

何作ったのかー

あ艦これBlogという艦これのまとめサイトからページを取得して、自動的にそこに貼ってある画像をダウンロードさせていただくプログラムです。

akankore.doorblog.jp

エロサイトちゃうよっ!!

 

これがコードだ!!

まず入れるモジュールからー。

 

import requests

import os

from bs4 import BeautifulSoup

 

それからダウンロードするときの名前設定、ダウンロード先ファイルを指定したり、ダウンロードするための関数を定義。

 

def download(keyword):
    for img in soup.select(keyword):
        file_name = img["src"].split('/')[-1]
        res = requests.get(img["src"],stream=True)
        if res.status_code == 200:
            with open("./downloads/"+number+'/'+file_name,"wb") as file:
                for chunk in res.iter_content(chunk_size=2048):
                    file.write(chunk)
            file.close()

 

Python初心者なので怖い指摘は控えておなシャス!

そんでもって本体?

 

print("akankore's page number: (example:49295408)")
number = input()
url = requests.get("http://akankore.doorblog.jp/archives/"+number+".html")
soup = BeautifulSoup(url.content,"html.parser")
print(soup.title.string)
if os.path.exists("./downloads") == False:
    os.system("mkdir ./downloads")
os.system("mkdir ./downloads/"+number)
download(".t_b a img")
download("a .mt-tweetimg-multi")

 

うん。なんで3行目、urlって名前にしたんだろう。。reqとかが良さげだのに。

ネーミングセンスや正規表現?に関しては許せ下さい。

 

これ実行し、49295408と入力すると、

http://akankore.doorblog/archives/49295408.html

の.t_bの中のaの中のimg、またaの中の.mt-tweeting-multiの画像が、./Downloads/49295408/にダウンロードされます!良さ!

49295408は趣m...適当に例としてあげただけだからっ!

 

ちなみにタイトルと入力するべき番号を取得するプログラムも組んだので無限に画像を得ることもできそう。

 

まとめ

僕悪いことしてない。健全。

 

そして無限の可能性を見た。

 

こここうした方がいいよー、とか、こんな楽しい学問もあるよー、とか、優しく教えてくださいな。ありがとうございました。