やりたいこと
pythonでスクレイピングしてWordPressの自分のサイトに自動投稿したい
できていないこと
~~下記の参考サイトのコードを打つと
<Response [403]>
が返ってくる。
~~
↑
下記のサイトで解決しました!
[WordPress]WP REST APIを使おうとすると403(Forbidden Access)エラーになる
しかし、今度は
<Response [401]>
が返ってくるようになりました。。
WordPressのRESTAPIでアプリケーションパスワードの認証がとおらないなら
↑
こちらのサイトにあるように下記のコードをhtaccessに追記しましたが、まだ401が出てきます。。。
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
環境
Google Colaboratoryを使っています。
参考サイト
[Python]WordPressの自動投稿をしてみた
参考サイトのコード
python
1# Pythonのお勉強 No.4 WordPressの自動投稿 2import requests 3import urllib 4from bs4 import BeautifulSoup 5from datetime import datetime 6 7# スクレイピング対象 8url = 'https://news.google.com/search' 9keyword = "香川真司 OR 久保建英" 10params = {'hl':'ja', 'gl':'JP', 'ceid':'JP:ja', 'q':keyword} 11 12# WordPress接続情報 13WP_URL = 'https://xxxx.com' 14WP_USERNAME = 'userName' 15WP_PASSWORD = 'xxxx xxxx xxxx xxxx xxxx xxxx' 16 17# WordPress新規投稿関数 18def post_article(status, slug, title, content, category_ids, tag_ids, media_id): 19 20 # REST APIを使うための認証情報 21 user_ = WP_USERNAME 22 pass_ = WP_PASSWORD 23 # 投稿記事情報 24 payload = {"status": status, #ステータス 公開:publish, 下書き:draft 25 "slug": slug, #URLスラッグ 26 "title": title, #タイトル 27 "content": content, #内容 28 "date": datetime.now().isoformat(), #投稿日時 29 "categories": category_ids, #カテゴリー 30 "tags": tag_ids} #タグ 31 if media_id is not None: 32 payload['featured_media'] = media_id #アイキャッチ画像 33 34 # 記事の新規投稿を行う 35 res = requests.post(urllib.parse.urljoin(WP_URL, "wp-json/wp/v2/posts"), #"wp-json/wp/v2/posts"にPostすると新規投稿になる 36 json=payload, #投稿する記事の内容を設定する 37 auth=(user_, pass_)) #ユーザ、パスワードを設定する 38 return res 39 40# スクレイピング対象のURLにリクエスト 41res = requests.get(url, params=params) 42soup = BeautifulSoup(res.content, "html.parser") 43 44# レスポンスからh3階層のニュースを1件抽出する 45h3_entry = soup.select_one(".xrnccd") 46 47# ニュースのリンク先URLを取得し、整形してフルパスの<a>タグを作る 48h3_link = h3_entry.select_one("h3 a")["href"] 49h3_link = urllib.parse.urljoin(url, h3_link) 50content = '<a href="' + h3_link + '">' + h3_link + '</a>\n' 51 52# 記事を下書き投稿する 53post_article('draft', 54 'WordPress-New-Post', 55 '【動作確認】WordPress自動投稿', 56 content, 57 category_ids=[2], 58 tag_ids=[5,6], 59 media_id=759)
確認したいこと
WordPress接続情報
WP_URL = 'https://xxxx.com'
WP_USERNAME = 'userName'
WP_PASSWORD = 'xxxx xxxx xxxx xxxx xxxx xxxx'
↑
ここのところだけはは自分のものに変えました。
WP_USERNAMEとWP_URLは下記の画像のものですよね?
WP_PASSWORDはApplication Passwordsで生成されたやつですよね?
他にも変更しないといけない所があるのでしょうか?
わかりづらいとは思いますがよろしくお願いします!!
あなたの回答
tips
プレビュー