こんにちは、久しぶりのブログの投稿になります。
前回の更新から僕が何をしていたかというと、プログラミングの勉強のための2つ目のブログの更新です。
プラグラミングを勉強している人にはわかってもらいたいんですが、プログラミングの勉強って全然続きませんよね笑
僕も何度も何度も挫折しています。
でもなぜか定期的に
ワイもプログラミングでお金を稼ぐんやー!
って無謀な挑戦をしたくなるんです。
夢をみたい年頃なんです。
プログラミングは本とネットどっちで勉強するのがいいのかな?
これまではHTMLとCSSの基本は学んで、JavaScriptも触りだけはやっていました。
勉強に使っていたのはYoutube。
で、どうだったかというと、
HTMLとCSSの基本はわかった。で、これをどうするんだい??
という感じ。
英単語はわかるけど、文章が書けない。みたいな。
実際使わないから、すぐに忘れてしまいます。
そこで、今回は本で勉強しようと、わかりやすいと評判の本をメルカリで買って進めました。
この本「1冊ですべて身につくHTML & CSSとWebデザイン入門講座 」です。
実際にWebサイトを作る過程がわかりやすくカラーで説明されているので、飽きずに進められました。
この本を読んでどうなったかというと、
HTMLとCSSの基本の使い方はわかった。で、次は何すればいいのかな??
本来だったら、自分でカスタマイズしたりするのがセオリーなのでしょう。
なぜかこれ以上やる気にならなくて、このままHTMLとCSSの基本だけは身についた状態で熱が覚めてしまいました。
でも、今回学んだこととして、プログラミングを勉強するときには、以下のように使い分けるのがいいみたいです。
隙間時間に、単語を覚える感覚で見るならYoutube。
すぐに参照したり、網羅的に学習したいなら本。
Pythonを使ってブログを自動で投稿する。使うことを考えてのプログラミング学習は効果的
みなさんはPythonというプログラム言語を知っていますか?
僕は知らなかったです。
HTMLとCSSは飽きてしまったのですが、プログラミングには未練があったのでYoutubeで調べていたらPythonという言語がアツいと聞いて興味をもちました。
Youtubeは大体のことが公開されていますから、当然Pythonのことも無料で公開されています。
学習のコストが下がるからホント便利ですよね。
Youtubeで調べてPythonの解説動画を観まくりました。
その中でいまにゅさんの動画がわかりやすく、Pythonではどのようなことができるのかを学びました。
Pythonは自動化が得意で、Web上のデータも抽出できるんだって。
自動化って超便利じゃん!
ここで1つ懸念点が出てきます。
HTMLとCSSみたいに、また飽きちゃうんじゃないかな…。
どうにか対策を考えて、今回のPythonでは、
「Pythonを勉強する」んじゃなくて、「〇〇するためにPythonを利用する」
とすればいいんじゃね?となりました。
この〇〇に入るものを探しました。
自動化…。Web上のデータの抽出…。
結果、思いついたのがブログを自動化することです。
Web上のデータを抽出してブログに自動で投稿するためにPythonを活用する。
ということで、動画のまとめ記事を投稿するだけの簡単なものですがPythonを使ってほとんど自動化して運営しています。
その感想は、中々に面白いです笑
普通、ブログを投稿するときは当たり前ですが、ワードプレスの管理画面開きますよね。
でも、Pythonでコードを書いて、「ターミナル」で実行したら、管理画面開かずにいくつもの記事が投稿されているんです。
最初にできたときは衝撃的でしたね。
Pythonのコードはこんな感じです。(一部ぼかしてあります。)
import requests
from bs4 import BeautifulSoup
from datetime import datetime
import os
# WordPress接続情報
WP_URL = ''
WP_USERNAME = ''
WP_PASSWORD = ''
# WordPress新規投稿関数
def post_to_wordpress(title, content, category_ids, tag_ids):
user_ = WP_USERNAME
pass_ = WP_PASSWORD
payload = {
"status": 'draft',
"slug": 'WordPress-New-Post',
"title": title,
"content": content,
"date": datetime.now().isoformat(),
"categories": category_ids,
"tags": tag_ids
}
try:
res = requests.post(f'{WP_URL}/wp-json/wp/v2/posts', json=payload, auth=(user_, pass_))
res.raise_for_status()
return res
except requests.exceptions.RequestException as e:
print('An error occurred while posting to WordPress:', e)
return None
# サムネイル画像をダウンロードする関数
def download_image(image_url, title):
try:
response = requests.get(image_url)
response.raise_for_status()
image_filename = f'{title}.jpg'
image_path = os.path.join('image', image_filename)
with open(image_path, 'wb') as f:
f.write(response.content)
print(f'Image {image_filename} downloaded and saved.')
return image_path
except requests.exceptions.RequestException as e:
print('An error occurred while downloading the image:', e)
return None
except Exception as e:
print('An error occurred:', e)
return None
# 記事を投稿する関数
def create_wordpress_post(title, video_id, image_url):
iframe_code = f'<iframe src="https:////{video_id}" frameborder="0" style="width:100%; height:570px;" scrolling="no" allowtransparency="true"></iframe>\n'
content = iframe_code
post_to_wordpress(title, content, category_ids=[], tag_ids=[])
# スクレイピング対象のページ情報
url = ''
try:
res = requests.get(url)
res.raise_for_status()
soup = BeautifulSoup(res.content, 'html.parser')
container_elements = soup.find_all('div', class_='container-fluid main-content padding-all-1px')
for container_element in container_elements:
video_thumb_elements = container_element.find_all('div', class_='video-thumb')
for video_thumb_element in video_thumb_elements:
video_id = video_thumb_element['data-videoid']
title_element = video_thumb_element.find('div', class_='video-title')
title = title_element.text.strip()
image_element = video_thumb_element.find('img', class_='img-responsive lazy')
if image_element:
image_relative_url = image_element['data-original']
if image_relative_url.endswith('.jpg'):
image_url = 'https:' + image_relative_url
print('Title:', title)
print('Video ID:', video_id)
print('Image URL:', image_url)
print('---')
image_path = download_image(image_url, title)
if image_path:
create_wordpress_post(title, video_id, image_url)
except requests.exceptions.RequestException as e:
print('An error occurred while making the request:', e)
except Exception as e:
print('An error occurred:', e)
このコードはどんなことをしているかというと、
- Web上のサイトから動画の「タイトル」「動画ID」「アイキャッチ画像」の情報を抽出する。
- アイキャッチ画像は自分のパソコン上に保存される。
- ワードプレスに下書きの状態で埋め込み動画が保存される。
ここから、少し手を加えることで一つの記事が完成します。
もし、反応が多いようでしたらちゃんと解説します。
まとめ:プログラミングは使うことを考えると楽しいし頭に入る
Pythonを勉強するにあたって、ブログと組み合わせられたのはとても楽しいし勉強の効率も上がった気がします。
どのプログラミング言語を学ぶにしても、成果物を考えてから学ぶのがいいと改めてわかりました。
Pythonではもっと別のことにも使えるので、また何か進展があったら皆さんに共有したいと思います。