起因#
これはウェブサイトの運営についての紹介です。
soapffz
はすでに40+
の記事を書いています:
他の人に自分のウェブサイトを紹介すると、いつも「訪問者数はどのくらい?」と聞かれます。
soapffz
は「百度にプッシュしていないので、百度では見つからない」と答えるしかありません。
そこで、この文章では、なぜ百度にプッシュしなかったのか、そしてその解決策を整理します。
二つの部分に分かれています:sitemap
の生成と百度へのプッシュ。
sitemap 生成#
前期に掘った落とし穴#
ウェブサイトを構築したばかりの頃、各記事を書き終えた後のリンクにはindex.php
が含まれていました。
このindex.php
を取り除いて、以下のようなリンクにするために:
https://soapffz.com/sec/247.html
https://soapffz.com/python/245.html
https://soapffz.com/tools/239.html
https://soapffz.com/sec/233.html
私はバックエンドで以下の操作を行いました:
これにより、いくつかのsitemap
自動生成プラグインを使用した際に、こうなってしまいました:
手間#
その中で、sitemap
生成プラグインの他に、オンラインサイトも使用しました。例えばこれ。
八分半かけて、124 件のリンクをクロールし、View Sitemap Details
をクリックして詳細を確認できます。
Other Downloads
に示されているボタンをクリックして、すべての形式のファイルをダウンロードします:
クロールしたリンクはすべて正常ですが、問題も発生しました。
このようにsitemap
を生成するのはあまりにも手間がかかります。後でPython
を使ってウェブサイトのすべての URL をクロールすることも試みました。
しかし、考えてみると、単なるurl
形式の問題に過ぎません。
最終解決策#
最終的に、url
にディレクトリフィールドを含めないことに決めました:
そして、前述の八云酱のプラグインを使用してsitemap
を生成します:
その後、百度に提出を試みます:
リンクが正常に提出されたことが確認できます。
百度への主动推送#
sitemap
の処理が完了しただけでは不十分です。主动推送とsitemap
を組み合わせて、百度の収録をより早くすることができます。
百度の主动推送方法:
大体の意味は、url.txt
に自分のtoken
を付けて百度リソースプラットフォームに送信することです。
私はPython
を使って、ネット上の記事を参考にしてスクリプトを書きました。
ロジックは、ウェブサイトの現在のsitemap.xml
を解析し、urls
を取得し、自分のtoken
とウェブサイト名を付けることです。
request
ライブラリのpost
メソッドを使用して送信し、返されたステータスを確認するだけです。
全コードは以下の通りです:
# -*- coding: utf-8 -*-
'''
@author: soapffz
@fucntion: ウェブサイトのsitemap.xmlからurlを取得し、百度站长平台に主动推送
@time: 2019-07-25
'''
import requests
import xmltodict
class BaiduLinkSubmit(object):
def __init__(self, site_domain, sitemap_url, baidu_token):
self.site_domain = site_domain
self.sitemap_url = sitemap_url
self.baidu_token = baidu_token
self.urls_l = [] # クロールする必要のあるurlを保存
self.parse_sitemap()
def parse_sitemap(self):
# ウェブサイトのsitemap.xmlを解析してすべてのurlsを取得
try:
data = xmltodict.parse(requests.get(self.sitemap_url).text)
self.urls_l = [t["loc"] for t in data["urlset"]["url"]]
except Exception as e:
print("sitemap.xmlのクロール中にエラーが発生しました:", e)
return
self.push()
def push(self):
url = "http://data.zz.baidu.com/urls?site={}&token={}".format(
self.site_domain, self.baidu_token)
headers = {"Content-Type": "text/plain"}
r = requests.post(url, headers=headers, data="\n".join(self.urls_l))
data = r.json()
print("成功に{}件のurlを百度検索リソースプラットフォームに推送しました".format(data.get("success", 0)))
print("今日残っている推送可能な件数:", data.get('remain', 0))
not_same_site = data.get('not_same_site', [])
not_valid = data.get("no_valid", [])
if len(not_same_site) > 0:
print("当サイトのurlではないため処理されなかったurlが{}件あります:".format(len(not_same_site)))
for t in not_same_site:
print(t)
if len(not_valid) > 0:
print("不正なurlが{}件あります:".format(len(not_valid)))
for t in not_valid:
print(t)
if __name__ == "__main__":
site_domain = "https://soapffz.com" # ここにあなたのウェブサイトを入力してください
sitemap_url = "https://soapffz.com/sitemap.xml" # ここにあなたのsitemap.xmlの完全なリンクを入力してください
baidu_token = "" # あなたの百度tokenを入力してください
BaiduLinkSubmit(site_domain, sitemap_url, baidu_token)
私はここで三回テストしました。それぞれ正常な場合、sitemap
プラグインをオフにした場合、そしてsitemap
を無茶苦茶に書いた場合に対応しています。
結果は以下の通りです:
MIP& ウェブページ加速#
百度站长平台はこのように紹介しています:
- MIP (Mobile Instant Page - モバイルウェブページ加速器) は、モバイルウェブページに適用されるオープンな技術標準のセットです。MIP-HTML 規範、MIP-JS 実行環境、MIP-Cache ページキャッシュシステムを提供することで、モバイルウェブページの加速を実現します。
- AMP(Accelerated Mobile Pages)は、Google のオープンソースプロジェクトで、モバイルデバイス上で迅速に読み込まれる軽量のウェブページであり、モバイルデバイス上でウェブページが迅速に読み込まれ、非常に美しく見えることを目的としています。百度は現在 AMP の提出をサポートしています。
要するに、モバイル端末向けの加速であり、SEO
に良い影響を与えることは間違いありません。
ここで使用しているプラグインはHolmesianのツールTypecho-AMPです。
プラグインのバックエンドインターフェースは以下のようになります:
百家号もサポートしていますが、私はここでは必要ないので @(滑稽)、インターフェースを設定するだけで大丈夫です。
そして、コンソールのドロップダウンメニューには、百度へのAMP/MIP
を推送するボタンがあります:
クリックすると以下のようになります:
推送を試みると:
推送できないことがわかりました。しばらくホスティングを設定していなかったので、主动推送のルールを確認したところ、非常に興味深いことがわかりました。
基本的なリンク提出では、リンクの後ろにmip/amp
を追加するだけで、返されるパラメータがsuccess_mip/success_amp
などに変わります。
したがって、上記のコードを変更して、推送するurl
とmip/amp
に推送するコードを一緒にして同時に推送します: