Mixi日記のExport

2023/01/21

その他

過去にMixiに書いた数百件の日記をExportしたいと思った。


Pythonで各ページのHTMLを保存しておけば、あとはそのうち適当にまとめられるか、と思って試してみたが、ログイン周りが意外と難しい。

ReCaptcha (v3)あたりがいい仕事をしている気がする。なんか弾かれる。

セッションクッキーを抜き出してどうこうすれば、というのも試してみたけれど、初めてでコツが分からなさすぎてどうにもならない。


結局、ReCaptchaさんに通していただくために、ログインだけは手動でやることでなんとかなった。


import time

import chromedriver_binary

import pandas as pd

from selenium import webdriver

from selenium.webdriver.common.by import By


driver = webdriver.Chrome()
driver.get('https://mixi.jp/')

username = driver.find_elements(By.NAME, "email")[0]
password = driver.find_elements(By.NAME, "password")[0]
username.send_keys('<ここにメールアドレス>')
password.send_keys('<ここにパスワード>')
#input()で待機させて、ログインボタンは自分で押す。ログインできたらターミナルになにか入力してページのダウンロード処理に進む
print('Type anything after logging in.')
val = input()

# このあとに、ページのダウンロードなどの処理を書く。
# 私の場合は事前に日記のURL一覧を作成しておき、それを順に読んでいる。

df_url_path = <URL一覧のパス> 
df = pd.read_csv(df_url_path)
urls = df['URL'].to_list()

for url in urls:
    driver.get(url)
    html = driver.page_source.replace('euc-jp', 'utf-8') #注:下記
    output_path = <保存先フォルダ名> + url[33:43] + '.html'
    with open(output_path, 'w') as f:
        f.write(html)
    time.sleep(4)

driver.quit()


#注1: SeleniumはUTF-8でダウンロードしてくるので、HTMLの中のエンコーディングの記載の方を置き換えている。