helloworlds

色々試してみたくなっちゃうエンジニア 基礎をコツコツ (文系エンジニア) 師匠ほしい!w

【Python】勉強がてら簡単なWeb Scrapingやってみた

今年はPythonを少し勉強しようと思っていたので、簡単にできそうな「Web Scraping(Web スクレイピング)」のコードを書いてみた。 (勿論ググって参考参考しましたけど)

コマンドラインから

$ python3 filename http://domain/page

みたいにして任意のURLを引数にすると、そのページの画像を取得してくるというもの。 まあ、もうネットにありふれているけど、自分の勉強のためなので許して下さいw

pythonのヴァージョンは、3.5.0です。

今回使用したライブラリを以下です。

requests

PythonHTTPライブラリ。 パラメータを付与できたり、ヘッダーもカスタムしてPOSTしたりGETできる。

詳細はここ!!

BeautifulSoup4

HTMLやXMLの中身を解析して、任意の情報を取得するためのライブラリです。

詳細はここ!! 日本語はここ!!

lxml

XML(HTML)を扱う高速で便利なライブラリ

詳細はここ!! 日本語ならこの方の記事が良さそう!!

Pythonのライブラリなんて全然詳しくないので、新鮮に感じました。

そしてコードはこれだけ!

import requests
from bs4 import BeautifulSoup
import sys


args = sys.argv
URL = args[1]
images = []

soup = BeautifulSoup(requests.get(URL).content, 'lxml')

for link in soup.find_all("images"):
    if link.get("src").endswith(".jpg"):
        images.append(link.get("src"))
    elif link.get("src").endswith(".png"):
        images.append(link.get("src"))

for target in images:
    re = requests.get(target)
    with open ('img/' + target.split('/')[-1], 'wb') as f:
        f.write(re.content)

print("ok, successful!!")

任意のディレクトリでこのpythonファイルを作成し、同じ階層にimagesというディレクトリを作成します。 実行するとimagesフォルダ配下に、画像が取得されているというかんじ。

実に簡単でした。 ライブラリの細かい活用方法は、またおって何か開発するときにでも見てみようかと思います。

以上.