banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

Python--百度ウェブマスターツールの自動プッシュ

起因#

これはウェブサイトの運営についての紹介です。

soapffzはすでに40+の記事を書いています:

image

他の人に自分のウェブサイトを紹介すると、いつも「訪問者数はどのくらい?」と聞かれます。

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

私はバックエンドで以下の操作を行いました:

image

これにより、いくつかのsitemap自動生成プラグインを使用した際に、こうなってしまいました:

image

手間#

その中で、sitemap生成プラグインの他に、オンラインサイトも使用しました。例えばこれ

image

八分半かけて、124 件のリンクをクロールし、View Sitemap Detailsをクリックして詳細を確認できます。

Other Downloadsに示されているボタンをクリックして、すべての形式のファイルをダウンロードします:

image

クロールしたリンクはすべて正常ですが、問題も発生しました。

このようにsitemapを生成するのはあまりにも手間がかかります。後でPythonを使ってウェブサイトのすべての URL をクロールすることも試みました。

しかし、考えてみると、単なるurl形式の問題に過ぎません。

最終解決策#

最終的に、urlにディレクトリフィールドを含めないことに決めました:

image

そして、前述の八云酱のプラグインを使用してsitemapを生成します:

image

その後、百度に提出を試みます:

image

リンクが正常に提出されたことが確認できます。

百度への主动推送#

sitemapの処理が完了しただけでは不十分です。主动推送とsitemapを組み合わせて、百度の収録をより早くすることができます。

百度の主动推送方法:

image

大体の意味は、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を無茶苦茶に書いた場合に対応しています。

結果は以下の通りです:

image

MIP&AMP ウェブページ加速#

百度站长平台はこのように紹介しています:

  1. MIP (Mobile Instant Page - モバイルウェブページ加速器) は、モバイルウェブページに適用されるオープンな技術標準のセットです。MIP-HTML 規範、MIP-JS 実行環境、MIP-Cache ページキャッシュシステムを提供することで、モバイルウェブページの加速を実現します。
  2. AMP(Accelerated Mobile Pages)は、Google のオープンソースプロジェクトで、モバイルデバイス上で迅速に読み込まれる軽量のウェブページであり、モバイルデバイス上でウェブページが迅速に読み込まれ、非常に美しく見えることを目的としています。百度は現在 AMP の提出をサポートしています。

要するに、モバイル端末向けの加速であり、SEOに良い影響を与えることは間違いありません。

ここで使用しているプラグインはHolmesianのツールTypecho-AMPです。

プラグインのバックエンドインターフェースは以下のようになります:

image

百家号もサポートしていますが、私はここでは必要ないので @(滑稽)、インターフェースを設定するだけで大丈夫です。

そして、コンソールのドロップダウンメニューには、百度へのAMP/MIPを推送するボタンがあります:

image

クリックすると以下のようになります:

image

推送を試みると:

image

推送できないことがわかりました。しばらくホスティングを設定していなかったので、主动推送のルールを確認したところ、非常に興味深いことがわかりました。

基本的なリンク提出では、リンクの後ろにmip/ampを追加するだけで、返されるパラメータがsuccess_mip/success_ampなどに変わります。

したがって、上記のコードを変更して、推送するurlmip/ampに推送するコードを一緒にして同時に推送します:

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。