WebCode
ekip
- Katılım
- 13 Ağu 2024
- Mesajlar
- 197
- Tepkime puanı
- 35
Googlebot'un sitenizi taramasını, yeni veya yeni güncellenen sayfalarınızı keşfetmesini ve ardından bunları dizine eklemesini beklemeniz gereken günler (neredeyse) geride kaldı. İlk olarak 2018'de yayınlanan ve iş ilanı URL'leri için ayrılmış olan Google'ın Dizinleme API'si, site sahiplerinin sitelerine sayfa ekledikleri veya kaldırdıkları zaman Google'a doğrudan bildirimde bulunmalarını sağlar.
Dizinleme API'si şunlar için kullanılabilir:
Bu yazımızda, sitenizin URL dizin isteklerini toplu olarak Google'a göndermek ve Google'ın sayfalarınızı daha hızlı taramasını sağlamak için Python'da bir betiğin nasıl oluşturulacağına bakacağız.
Bonus olarak, bu betiği güncellediğiniz veya Google'dan kaldırmak istediğiniz sayfalar için istek göndermek amacıyla da kullanabilirsiniz.
!pip oauth2client'ı kurun
Veya, kütüphaneleri Windows'a kurmak istiyorsanız, 'Komut İstemi'ne veya macOS kullanıyorsanız 'Terminal'e aşağıdaki komutu girmeniz gerekecektir:
pip oauth2client'ı kurun
oauth2client.service_account'tan ServiceAccountCredentials'ı içe aktarın
googleapiclient.discovery'den yapıyı içe aktar
googleapiclient.http'den BatchHttpRequest'i içe aktarın
httplib2'yi içe aktar
json'u içe aktar
google.colab'dan dosyaları içe aktar
onları içe aktar
Google Colab'da, URL'lerinizin karşılık gelen metin dosyasını yüklemek ve çağırmak için aşağıdaki kodu kullanabilirsiniz:
yüklenen_dosya = dosyalar.yükle ( )
Bundan sonra bir sözlük oluşturmamız ve istek göndermek için URL'leri hazırlamamız gerekiyor. Bunu aşağıdaki kodu kullanarak yapabiliriz:
liste= []
yüklenen_dosyadaki dosya_adı için.keys ( ) :
satırlar = yüklenen_dosya [ dosya_adı ] . splitlines ()
satır içi satırlar için :
liste.ekle ( satır.kod çöz ( ' utf -8' ))
istekler = {}
i listesindeki için :
istekler [ i ] = "URL_GÜNCELLENDİ"
yazdır ( istekler )
Kodda, yeni içerik güncellemek veya yayınlamak için gerekli sözlüğün oluşturulacağını belirtmek gerekir. URL'leri kaldırmanız gerekirse, basitçe şunu kullanabilirsiniz:
URL_SİLİNDİ
yerine komut
URL_GÜNCELLENDİ
.
Daha sonra projeniz için bir isim seçmeniz ve 'Oluştur'u seçmeniz gerekecektir.
Projeyi oluşturduktan sonra menünün proje kısmından projeyi seçmeniz, ardından sol menüden IAM & ADMIN'i seçmeniz ve son olarak 'Hizmet Hesapları'nı seçmeniz gerekecektir.
Bu adımdan sonra, 'Hizmet hesabı oluştur'a tıklayın ve hesabınızı oluşturmaya devam edin. İlk bölümde, hesabınız için bir ad seçin ve ardından 'Oluştur ve devam et'e tıklayın. Tamamlandığında, ikinci adıma geçebilirsiniz.
'Bu hizmet hesabına projeye erişim izni ver' bölümünde, hesabınız için bir rol seçin ve Hızlı erişim menüsünden 'Sahip'i, ardından 'Temel' bölümünü seçtiğinizden emin olun. Ardından 'Devam'a tıklayın ve bir sonraki adımda hiçbir şeyi değiştirmenize gerek kalmayacak, sadece 'Bitti'ye tıklayın.
Açılan sayfada, 'E-posta' alanında bulunan e-posta adresini kaydedin, çünkü daha sonra buna ihtiyacımız olacak. 'Eylemler'e tıklayın ve ardından 'Anahtarları Yönet'e tıklayın.
Açılan sayfada 'Anahtar Ekle' kısmından 'Yeni anahtar oluştur' seçeneğine tıklayın ve ardından bir JSON dosyası oluşturup indirdiğiniz dosyayı kaydedin.
Şimdi Indexing API'yi aktifleştirmenin zamanı geldi; bunun için 'API'ler ve Hizmetler' bölümünden 'API'leri ve hizmetleri etkinleştir' seçeneğine tıklayın.
Sonraki sayfada 'Indexing API'yi arayın. Seçtikten sonra API'nizi etkinleştirmek için 'Etkinleştir'e tıklayın.
Eğer e-postanızı kaydetmediyseniz, servis hesaplarına geri dönüp e-postayı kopyalamanız yeterli olacaktır.
E-postanız daha önce indirdiğiniz JSON dosyasında da olmalı ve dosyayı açıp 'client_email' ifadesini arayarak ona ulaşabilirsiniz.
Vaka çalışmasını okuyun
JsonKey = dosyalar.yükle ( )
Daha sonra, dosyaların yüklendiği yolu bulmanız gerekecektir. Bu, OS kütüphanesi kullanılarak yapılabilir. Aşağıdaki kodu kullanabilir ve dosyanın yüklendiğinden emin olmak için, başlangıçta bir 'if' kullanmanız gerekecektir:
eğer JsonKey:
json_yolu = '/içerik'
json_files = [ pos_json os.listdir ( path_to_json ) pos_json.endswith ( ' .json ' ) ]
yol = "/içerik/" + json_dosyaları [ 0 ]
OAuth 2.0'ı kullanmak ve istek göndermek için bazı bilgileri aramanız ve bunları elde etmek için Indexing API'sinden aşağıdaki bağlantıyı kullanmanız gerekir. Bu konu hakkında daha fazla bilgi için Authorize Requests sayfasına başvurabilirsiniz.
KAPSAMLAR = [ "https://www.googleapis.com/auth/indeksleme" ]
Tek bir istek göndermek istiyorsanız:
SON NOKTA = "https://indexing.googleapis.com/v3/urlBildirimler:yayınla"
Toplu istek göndermek istiyorsanız:
SON NOKTA = "https://indexing.googleapis.com/batch"
Bu scriptte istekleri tek tek gönderiyoruz ancak fark şu ki, zaten 100 URL içeren bir sözlük oluşturduk ve tüm istekler tek seferde gönderiliyor.
Şimdi 'Authorize credentials' değişkenlerini oluşturmamız gerekiyor ve bunu oauth2client kütüphanesini ve ServiceAccountCredentials'ı kullanarak aşağıdaki kodları kullanarak değişkenleri oluşturarak yapıyoruz:
kimlik bilgileri = ServiceAccountCredentials.from_json_keyfile_name ( yol ,kapsamlar=KAPSAMLAR )
http = kimlik bilgileri.yetkilendirme ( httplib2.Http ( ))
Bir sonraki adımda, servis araçları oluşturacağız ve ardından bir fonksiyon oluşturacağız. Bundan sonra, son isteği ele alacağız. Kodların nasıl çalıştığı hakkında daha fazla bilgi için Class BatchHttpRequest sayfasını okuyabilirsiniz.
Bu bölümdeki son kodlar aşağıdaki gibi gözükecektir:
servis = build ( 'indeksleme' , 'v3' , kimlik bilgileri=kimlik bilgileri )
def index_api ( istek_kimliği, yanıt, istisna ) :
istisna Hiçbiri değilse :
yazdır ( istisna )
başka :
yazdır ( cevap )
eğer JsonKey:
toplu iş = servis.new_batch_http_request ( geri arama = dizin_api )
url için , isteklerdeki api_type . items () :
toplu iş . ekle ( service.urlNotifications () . yayınla (
gövde= { "url" : url, "tür" : api_türü }))
toplu iş. yürüt ()
İsteği gönderdikten sonra, eğer her şey doğru şekilde yapılmışsa, istekler aşağıdaki örnekteki gibi yazdırılacaktır:
Google Colab'ın son halini buradan inceleyebilirsiniz .
API hala hızlı devir hızı olan sayfalara sahip web siteleri için ayrılmış olsa da (iş ilanı siteleri gibi) hala güçlü bir araçtır. Ve belki de, kim bilir, gelecekte daha fazla şeye genişletilebilir ve bu eğitim daha da faydalı olacaktır.
Dizinleme API'si şunlar için kullanılabilir:
- Daha kaliteli kullanıcı trafiği için dizindeki URL'leri güncelleyin ve arama sonuçlarını güncel tutun.
- Dizininizden eski veya gereksiz URL'leri kaldırın.
- API'yi çağırma sayınızı azaltmak için toplu istekler gönderin.
Bu yazımızda, sitenizin URL dizin isteklerini toplu olarak Google'a göndermek ve Google'ın sayfalarınızı daha hızlı taramasını sağlamak için Python'da bir betiğin nasıl oluşturulacağına bakacağız.
Bonus olarak, bu betiği güncellediğiniz veya Google'dan kaldırmak istediğiniz sayfalar için istek göndermek amacıyla da kullanabilirsiniz.
İhtiyacımız olacak kütüphaneler
Bu betiği Python'da oluşturmak için Google Colab'ı kullanacağız ve ayrıca aşağıdaki kütüphanelere de ihtiyacımız olacak:- oauth2istemci
- GoogleApiİstemcisi
- httplib2
- JSON
- Google Şirketi
- SEN
!pip oauth2client'ı kurun
Veya, kütüphaneleri Windows'a kurmak istiyorsanız, 'Komut İstemi'ne veya macOS kullanıyorsanız 'Terminal'e aşağıdaki komutu girmeniz gerekecektir:
pip oauth2client'ı kurun
Kütüphaneleri kullanma
Gerekli kütüphaneleri kurduktan sonra bunları kullanmak ve çağırmak için aşağıdaki kodları kullanmanız gerekecektir:oauth2client.service_account'tan ServiceAccountCredentials'ı içe aktarın
googleapiclient.discovery'den yapıyı içe aktar
googleapiclient.http'den BatchHttpRequest'i içe aktarın
httplib2'yi içe aktar
json'u içe aktar
google.colab'dan dosyaları içe aktar
onları içe aktar
URL'leri hazırlama
Sonra, Google'a düzenlemelerinizi, yeni sürümlerinizi ve silinen sayfalarınızı bildirebileceğiniz bir metin dosyasına URL'lerimizi kopyalamamız gerekir. Dizinleme API'sini kullanırken günde 100 veya daha az bağlantıyla sınırlı olduğunuzu unutmayın. Metin dosyası şu şekilde görünmelidir:
Google Colab'da, URL'lerinizin karşılık gelen metin dosyasını yüklemek ve çağırmak için aşağıdaki kodu kullanabilirsiniz:
yüklenen_dosya = dosyalar.yükle ( )
Bundan sonra bir sözlük oluşturmamız ve istek göndermek için URL'leri hazırlamamız gerekiyor. Bunu aşağıdaki kodu kullanarak yapabiliriz:
liste= []
yüklenen_dosyadaki dosya_adı için.keys ( ) :
satırlar = yüklenen_dosya [ dosya_adı ] . splitlines ()
satır içi satırlar için :
liste.ekle ( satır.kod çöz ( ' utf -8' ))
istekler = {}
i listesindeki için :
istekler [ i ] = "URL_GÜNCELLENDİ"
yazdır ( istekler )
Kodda, yeni içerik güncellemek veya yayınlamak için gerekli sözlüğün oluşturulacağını belirtmek gerekir. URL'leri kaldırmanız gerekirse, basitçe şunu kullanabilirsiniz:
URL_SİLİNDİ
yerine komut
URL_GÜNCELLENDİ
.
Dizinleme API'sini oluşturma ve etkinleştirme
API'yi oluşturmak ve etkinleştirmek için Google Developer Console'a gitmeniz , ardından 'Bir proje seç'e tıklamanız ve yeni bir proje oluşturmak için 'Yeni proje' seçeneğini kullanmanız gerekecektir.
Daha sonra projeniz için bir isim seçmeniz ve 'Oluştur'u seçmeniz gerekecektir.
Projeyi oluşturduktan sonra menünün proje kısmından projeyi seçmeniz, ardından sol menüden IAM & ADMIN'i seçmeniz ve son olarak 'Hizmet Hesapları'nı seçmeniz gerekecektir.
Bu adımdan sonra, 'Hizmet hesabı oluştur'a tıklayın ve hesabınızı oluşturmaya devam edin. İlk bölümde, hesabınız için bir ad seçin ve ardından 'Oluştur ve devam et'e tıklayın. Tamamlandığında, ikinci adıma geçebilirsiniz.
'Bu hizmet hesabına projeye erişim izni ver' bölümünde, hesabınız için bir rol seçin ve Hızlı erişim menüsünden 'Sahip'i, ardından 'Temel' bölümünü seçtiğinizden emin olun. Ardından 'Devam'a tıklayın ve bir sonraki adımda hiçbir şeyi değiştirmenize gerek kalmayacak, sadece 'Bitti'ye tıklayın.
Açılan sayfada, 'E-posta' alanında bulunan e-posta adresini kaydedin, çünkü daha sonra buna ihtiyacımız olacak. 'Eylemler'e tıklayın ve ardından 'Anahtarları Yönet'e tıklayın.
Açılan sayfada 'Anahtar Ekle' kısmından 'Yeni anahtar oluştur' seçeneğine tıklayın ve ardından bir JSON dosyası oluşturup indirdiğiniz dosyayı kaydedin.
Şimdi Indexing API'yi aktifleştirmenin zamanı geldi; bunun için 'API'ler ve Hizmetler' bölümünden 'API'leri ve hizmetleri etkinleştir' seçeneğine tıklayın.
Sonraki sayfada 'Indexing API'yi arayın. Seçtikten sonra API'nizi etkinleştirmek için 'Etkinleştir'e tıklayın.
Search Console'a e-posta ekleme
Dizinleme API'sini kullanmak için, web sitenizin Google Search Console'unda bir erişim hesabı oluşturmanız gerekir. Bunu yapmak için, Google Search Console'unuzu açmanız ve 'Ayarlar' bölümünden 'Kullanıcılar ve izinler'e tıklamanız ve ardından 'Kullanıcı ekle' bölümünden yeni bir kullanıcı eklemeniz gerekir. Yeni sayfa açıldığında, daha önce kaydettiğiniz e-postayı girin ve iznini 'Sahip' olarak değiştirin.
Eğer e-postanızı kaydetmediyseniz, servis hesaplarına geri dönüp e-postayı kopyalamanız yeterli olacaktır.
E-postanız daha önce indirdiğiniz JSON dosyasında da olmalı ve dosyayı açıp 'client_email' ifadesini arayarak ona ulaşabilirsiniz.
[Vaka Çalışması] Dizinleme sorunlarını bulun ve düzeltin
Sıfır trafikten üstel büyümeye: GroupM Türkiye'nin Unilever'in endeksleme sorunlarını çözmek için Oncrawl'ı nasıl kullandığını keşfedin.
Vaka çalışmasını okuyunJSON dosyasını yükleme
JSON dosyasını Google Colab'a yüklemek için aşağıdaki kodu kullanmanız gerekecektir:JsonKey = dosyalar.yükle ( )
Daha sonra, dosyaların yüklendiği yolu bulmanız gerekecektir. Bu, OS kütüphanesi kullanılarak yapılabilir. Aşağıdaki kodu kullanabilir ve dosyanın yüklendiğinden emin olmak için, başlangıçta bir 'if' kullanmanız gerekecektir:
eğer JsonKey:
json_yolu = '/içerik'
json_files = [ pos_json os.listdir ( path_to_json ) pos_json.endswith ( ' .json ' ) ]
yol = "/içerik/" + json_dosyaları [ 0 ]
Yetkilendirme istekleri
Bildiğiniz üzere Google, Indexing API'yi kullanabilmek için programımızın ve scriptimizin istekleri yetkilendirmek için OAuth 2.0 kullanması gerektiğini duyurdu.
OAuth 2.0'ı kullanmak ve istek göndermek için bazı bilgileri aramanız ve bunları elde etmek için Indexing API'sinden aşağıdaki bağlantıyı kullanmanız gerekir. Bu konu hakkında daha fazla bilgi için Authorize Requests sayfasına başvurabilirsiniz.
KAPSAMLAR = [ "https://www.googleapis.com/auth/indeksleme" ]
İstek gönderme
Google , Dizinleme API'sini Kullanma sayfasında, istek göndermek için aşağıdaki koşullara sahip bir uç nokta kullanmamız gerektiğini ve isteklerin post metodu kullanılarak gönderilmesi gerektiğini açıklamıştır :Tek bir istek göndermek istiyorsanız:
SON NOKTA = "https://indexing.googleapis.com/v3/urlBildirimler:yayınla"
Toplu istek göndermek istiyorsanız:
SON NOKTA = "https://indexing.googleapis.com/batch"
Bu scriptte istekleri tek tek gönderiyoruz ancak fark şu ki, zaten 100 URL içeren bir sözlük oluşturduk ve tüm istekler tek seferde gönderiliyor.
Şimdi 'Authorize credentials' değişkenlerini oluşturmamız gerekiyor ve bunu oauth2client kütüphanesini ve ServiceAccountCredentials'ı kullanarak aşağıdaki kodları kullanarak değişkenleri oluşturarak yapıyoruz:
kimlik bilgileri = ServiceAccountCredentials.from_json_keyfile_name ( yol ,kapsamlar=KAPSAMLAR )
http = kimlik bilgileri.yetkilendirme ( httplib2.Http ( ))
Bir sonraki adımda, servis araçları oluşturacağız ve ardından bir fonksiyon oluşturacağız. Bundan sonra, son isteği ele alacağız. Kodların nasıl çalıştığı hakkında daha fazla bilgi için Class BatchHttpRequest sayfasını okuyabilirsiniz.
Bu bölümdeki son kodlar aşağıdaki gibi gözükecektir:
servis = build ( 'indeksleme' , 'v3' , kimlik bilgileri=kimlik bilgileri )
def index_api ( istek_kimliği, yanıt, istisna ) :
istisna Hiçbiri değilse :
yazdır ( istisna )
başka :
yazdır ( cevap )
eğer JsonKey:
toplu iş = servis.new_batch_http_request ( geri arama = dizin_api )
url için , isteklerdeki api_type . items () :
toplu iş . ekle ( service.urlNotifications () . yayınla (
gövde= { "url" : url, "tür" : api_türü }))
toplu iş. yürüt ()
İsteği gönderdikten sonra, eğer her şey doğru şekilde yapılmışsa, istekler aşağıdaki örnekteki gibi yazdırılacaktır:
Google Colab'ın son halini buradan inceleyebilirsiniz .
Çözüm
Python, belirli görevleri otomatikleştirmeye yardımcı olabilen oldukça çok yönlü bir araçtır, sitenizin verilerini çıkarmak ve analiz etmek için kullanılabilir ve düzgün kullanıldığında sitelerimizin nasıl tarandığını ve dizine eklendiğini analiz etmeye ve iyileştirmeye yardımcı olabilir. Umarım Google'ın API dizinini bir dahaki sefere kullandığınızda bu öğreticiden iyi bir şekilde yararlanabilirsiniz.API hala hızlı devir hızı olan sayfalara sahip web siteleri için ayrılmış olsa da (iş ilanı siteleri gibi) hala güçlü bir araçtır. Ve belki de, kim bilir, gelecekte daha fazla şeye genişletilebilir ve bu eğitim daha da faydalı olacaktır.