Blogosメルマガが終了するので、Pythonでスクレイピングして過去記事を保存してみた

みなさん、こんにちは! 声のメルマガ#9収録終了! 来週水曜日配信の号は、読者のかたのお便り、わたしのおしゃべりでお届けします! 平松モモコさん、まきまきまっきーの岐阜弁で服部みれいインタビューも! めちゃおもしろかったです♪ どうぞおたのしみにー みれい
質問タイム終了です。 後日いただいた質問に答えていきますが、全部の質問に答えられないかもしれないのでご了承ください。 ドロップキックさんのメルマガで喋った内容もあるので、よかったらそちらを読んでみて下さい。 たくさんの質問ありがとうございました。

Blogosメルマガが終了します

【重要】サービス終了に関するお知らせ
平素より、BLOGOSメルマガをご愛顧いただき、誠にありがとうございます。
2018年3月26日をもちまして「BLOGOSメルマガ」を終了させていただくこととなりました。

詳細につきましては、以下お知らせをご覧くださいますようお願い申し上げます。
BLOGOSメルマガ サービス終了のお知らせ
http://magazine.livedoor.com/

経緯

今まで購入したメルマガを保存しておきたい!

Blogosメルマガってweb上でのフォント・文字の大きさともにちょうどよい大きさで好きで、
なおかつ、定期購読していたものはちゃんと購入済みとして閲覧できるので好きでした。

まぐまぐ、note,ニコニコメルマガは購読をストップすると過去のコンテンツが一切見れません。noteで単品購入すると過去に購入したコンテンツとして見れます。(定期購読した場合は購読解除で購入済みは読めなくなります。)

だからBlogosメルマガはけっこう重宝していたので、終了するのがショックです!!

はじめてのスクレイピング

大昔にRubyのスクレイピングの本を積読したものの、まったくスクレイピングしなかったのですが、今回は期限が迫っているのでモチベーションがちゃんとありました。
Pythonほぼほぼ初心者なので、汚いコードかと思いますが、ここにあるコードを改変すれば、
Blogosメルマガで購読したメルマガを保存できると思います。

login

ここにユーザー名とパスワードを入れてください。
USER = “”
PASS = “”

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

# メールアドレスとパスワードの指定
USER = ""
PASS = ""

# セッションを開始
session = requests.session()

# ログイン
login_info = {
    "livedoor_id":USER,
    "password":PASS
}

url_login = "https://member.livedoor.com/login/?.next=http%3A%2F%2Fmagazine.livedoor.com%2Fmanage%2F&.sv=magazine"
res = session.post(url_login, data=login_info)
res.raise_for_status() # エラーならここで例外を発生させる

ログイン後、特定の購読済みのメルマガがリストとして載っているページを探す。

変数resにログイン後のページのオブジェクトを入れています。
BeautifulSoupというParserを使って、aタグをすべて抽出しました。
配列で返ってきているので、僕の場合は6番目にありましたので6と指定しています、

#続き
# マイページのURLをピックアップする
soup = BeautifulSoup(res.text,"html.parser")
a = soup.find_all("a")
a = a[6]

if a is None:
    print("マイページが取得できませんでした")
    quit()

# 相対URLを絶対URLに変換
url_mypage = urljoin(url_login, a.attrs["href"])

購入済みのメルマガ一覧画面からメルマガをダウンロードする

そのメルマガページ数を見ると8ページありましたので、8と指定しました。

#続き
#ページ数
pages = 8

for i in range(pages):
    res = session.get(f"{url_mypage}?p={i+1}")
    res.raise_for_status()
    soup2 = BeautifulSoup(res.text, "html.parser")
    d = soup2.find_all(class_ = "title")
    for i in range(len(d)-1):
        url = d[i+1].find("a").attrs["href"]
        res = session.get(url)
        res.raise_for_status()
        x = url.split('/')
        name = x[-1].split(".")[0]
        with open( f'{name}.html','w') as file:
            file.write(res.text)

print("done!")

これでダウンロードできたかと思います。
生のhtmlがダウンロードできただけですので、
開くとCSSが適用されていないので綺麗になっていませんが、
その辺もゴニョゴニョ綺麗にして頂ければと思います。

  • コメント

    1. 匿名希望
      2018/01/20(土) 04:07:17

      みなさん、こんにちは! 声のメルマガ#9収録終了! 来週水曜日配信の号は、読者のかたのお便り、わたしのおしゃべりでお届けします! 平松モモコさん、まきまきまっきーの岐阜弁で服部みれいインタビューも! めちゃおもしろかったです♪ どうぞおたのしみにー みれい

    2. 匿名希望
      2018/01/20(土) 04:07:17

      質問タイム終了です。
      後日いただいた質問に答えていきますが、全部の質問に答えられないかもしれないのでご了承ください。
      ドロップキックさんのメルマガで喋った内容もあるので、よかったらそちらを読んでみて下さい。
      たくさんの質問ありがとうございました。

    記事に戻る

関連記事