Blog の
各ページ個別の
sitemap.xml に
validation を
Cloudflare - Wikipediaが
Validation API に
使って
前提
- python version
python -V ----------------------- Python 2.7.10 -----------------------
参考
使い方に ついて
API のhttps://amp.cloudflare.com/q/
です。
検証したい URL が、https://www.monotalk.xyz
であるとしたら、
https://amp.cloudflare.com/q/www.monotalk.xyz
に
妥当性の
上記URLに
{"version":"1498686280171","source":"http://www.monotalk.xyz","valid":true}
python スクリプト
sitemap.xml に
検証リクエストを
SITEMAP_URL
を
200記事URLを
依存ライブラリの
インストール
libxml と、BeautifulSoup4を 使います。 pip install lxml pip install beautifulsoup4
validate_amp.py
# -*- coding: utf-8 - import requests from simplejson import JSONDecodeError from bs4 import BeautifulSoup SITEMAP_URL = "https://www.monotalk.xyz/sitemap.xml" VALIDATE_API_URL = "https://amp.cloudflare.com/q/" def execute(): soup = BeautifulSoup(requests.get(SITEMAP_URL).text, "xml") for loc in soup.find_all('loc'): url = VALIDATE_API_URL + loc.get_text().replace('https://', '').replace('http://', '') result = None try: json_o = requests.get(url).json() if True is json_o.get("valid"): result = "OK" else: result = "NG" except JSONDecodeError: result = "ERROR" print("URL:" + loc.get_text() + "|||RESULT:" + result) if __name__ == '__main__': execute()
OUTPUT 以下のような
出力を コンソールに 行います。
RESULT:OK
が検証OK、 RESULT:NG
が検証NG、 対象の URLが Internal Server ERROR と なった 際に、 JSONDecodeError が 発生する ため、 RESULT:ERROR
としています。 URL:https://www.monotalk.xyz/blog/execute_redpen_on_wercker/|||RESULT:NG URL:https://www.monotalk.xyz/blog/WARNING-Since-version-6.0.0-Wicket-uses-JavaScript-event-onblur-on-wicket/|||RESULT:OK URL:https://www.monotalk.xyz/blog/How-to-redirect-to-external-site-on-Wicket/|||RESULT:NG URL:https://www.monotalk.xyz/blog/pip-install-mock-on-el-capitan/|||RESULT:NG
実際これで、
考慮漏れや、
以上です。
コメント