Python ile Herkese Açık Google Docs İçeriğini Kazıma Kılavuzu

Yorumlar: 0

Günümüzde bilgi olağanüstü hızlarda yayılıyor ve birçok dosya Google Docs'ta saklanıyor. Dolayısıyla, gerçekten de Google Docs veri kazıma, çok fazla zaman ve emek tasarrufu yapmanın harika bir yoludur.

Bu makalede, süreci otomatikleştirmeye yardımcı olan yöntemleri inceleyeceğiz. Google dokümanlarını kazımak ve bu dosyaları yaygın bir veri depolama biçimi olan JSON biçiminde kaydetmek için Python kullanacağız.

Google Dokümanlar neden kazınır?

Kamu belgelerinde depolanan verilerin otomatik olarak alınması çeşitli nedenlerle kullanılabilir. Herhangi bir manuel müdahale olmadan bilgi toplamanın otomatikleştirilmesine yardımcı olur. Bu şunlar için çok kullanışlıdır:

  • araştırma projeleri;
  • izleme görevleri;
  • özel veritabanları oluşturmak.

Google Docs'u Python ile kazımak, bu tür dosyaların içeriğini analiz etmek için de kullanışlıdır. Bu, bu hizmeti daha sonra raporlar kullanılarak işlenen veya makine öğrenimi sistemlerini eğiten doğru ve derinlemesine bilgi almak için harika bir kaynak haline getirir.

Google Dokümanlar Kazıma için Temel Araçlar ve Kütüphaneler

Google Docs veri kazıma işlemini etkili bir şekilde gerçekleştirmek için Python'da bu görev için uygun araçları seçmeniz gerekir. Kütüphanelerden bazıları aşağıdaki gibidir:

  • Requests, HTTP ile ilgili faaliyetleri gerçekleştirmek için kullanılan temel bir kütüphanedir. Bu, kullanıcının HTML içeriğini indirmesine ve çıkarmasına olanak tanır.
  • BeautifulSoup, HTML içeriğini ayrıştırmak için çok verimli bir işleme aracıdır. BeautifulSoup kullanılırken, dosyadan gerekli metin bölümleri veya öğeler kolayca elde edilebilir.
  • Google Docs API, dosyalarla programlı olarak çalışmak için bir araç sağlar. Başlıklar, bölümler, stiller ve daha fazlası gibi belge bileşenlerine erişim sağlar.

Bu araçlar arasında seçim yapmak, amacınızın bir dosyayı okumak mı yoksa yapılandırılmış veriler üzerinde bir API çağrısı kullanarak gelişmiş etkileşimler mi gerçekleştirmek istediğinize bağlıdır.

Google Docs Web Kazıma için Ortamınızı Ayarlama

Şimdi, çalışma ortamını nasıl kuracağımızı ve ana hatlarıyla belirtilen süreçleri nasıl tamamlayacağımızı incelememizi istiyorum.

Adım 1: Python Ortamınızı Hazırlama

Python'un yüklü olduğundan emin olun. Sonraki:

  • Sanal ortamınızı kurun ve başlatın:
    
    python -m venv myenv
    myenv\Scripts\activate
    source myenv/bin/activate
    
  • Gerekli tüm bağımlılıkları yükleyin:
    
    pip install requests beautifulsoup4 google-api-python-client gspread google-auth
    

Adım 2: Herkese Açık Google Dokümanlarına Erişim Sağlama

İlgili dosyayı açın. Belge kamu tarafından yetkilendirilmiş olmalıdır. Aşağıdaki adımları takip ediniz:

  1. Dosyayı açın.
  2. Üst çubukta "Dosya" → "Paylaş" → "Web'de yayınla" üzerine tıklayın veya "Bağlantıya sahip herkes görüntüleyebilir" ayarıyla "Paylaş" seçeneğini kullanabilirsiniz.

Bu olmadan, komut dosyalarınız erişim hataları döndürecektir.

Adım 3: Google Docs URL'lerinin Yapısını Keşfetme

Bir belge yayınlanır yayınlanmaz, URL'si aşağıdaki biçimi alır:


https://docs.google.com/document/d/1AbCdEfGhIjKlMnOpQrStUvWxYz/view

1AbCdEfGhIjKlMnOpQrStUvWxYz - dosya kimliği. API veya HTML kazıma kullanarak belgeye bu şekilde erişeceksiniz.

Adım 4: Google Dokümanlar veri kazıma için Doğru Yaklaşımı Seçme

İşte bu tür dokümanlardan bilgi çıkarmak için iki temel yaklaşım:

  • HTML kazıma. Dosya bir web sayfası olarak yayınlanmışsa, istekleri kullanarak dosyaya erişebilir ve BeautifulSoup ile ayrıştırabilirsiniz.
  • Google Docs API. HTML kullanımını gerektirmediğinden, biçimlendirilmemiş veriler yapılandırılacağı zaman bu kullanılmalıdır.

Daha az karmaşık durumlar için HTML yeterli olurken, daha karmaşık durumlarda API'ler gereklidir.

Adım 5: Yayınlanan Google Dokümanlarının HTML İçeriğini Ayrıştırma

Bir dosya web sayfası olarak yayınlandığında, HTML'sini almak ve ardından ilgili bilgileri almak için ayrıştırmak mümkündür:


import requests
from bs4 import BeautifulSoup

url = 'https://docs.google.com/document/d/YOUR_ID/pub'

response = requests.get(url)
if response.status_code == 200:
    soup = BeautifulSoup(response.text, 'html.parser')

    # Sayfadaki tüm metni ayıklayın
    text = soup.get_text()
    print(text)
else:
    print(f'Access error: {response.status_code}')

İşte çalışan algoritma:

  • Örneğin requests kullanarak belge URL'sine bir HTTP get isteği gerçekleştiririz.
  • Ardından web sayfasını BeautifulSoup ile ayrıştırın.
  • Ardından içeriği temizleyin ve ilgili düz metni çıkarın.

Adım 6: Veri Çıkarma için Google Docs API'sini Kullanma

İhtiyaç duyulan bilgiler konusunda daha fazla hassasiyet gerekiyorsa, en uygun araç, şirket tarafından yayınlanan işleyiciler ve belgeler aracılığıyla, dolayısıyla Google Docs API'sini kullanmaktır.

Başlatıcı adımlar:

Cloud Console'da bir proje oluşturma

  1. Google Cloud Console'a erişin.
  2. Yeni proje oluşturun.
  3. "API ve Hizmetler" bölümünde Google Docs API'yi etkinleştirin.
  4. Kimlik bilgileri oluşturun:
    • "Hizmet Hesabı "nı seçin.
    • Oluşturulan JSON dosyasını kaydedin, kodunuzda buna ihtiyacınız olacak.

Google Docs API ile bağlantı kurma ve belgeleri alma

Şuna benziyor:


from google.oauth2 import service_account
from googleapiclient.discovery import build

# Hizmet hesabı JSON dosyanızın yolu
SERVICE_ACCOUNT_FILE = 'path/to/your/service_account.json'

# Belge kimliğiniz
DOCUMENT_ID = 'YOUR_ID'

# Erişim yapılandırması
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE,
    scopes=['https://www.googleapis.com/tr/auth/documents.readonly']
)

service = build('docs', 'v1', credentials=credentials)

# Belgenin içeriğini alma
document = service.documents().get(documentId=DOCUMENT_ID).execute()

# Belge başlığını yazdırma
print('Document title: {}'.format(document.get('title')))

Adım 7: Kazınan Verilerin Depolanması ve Analizi

Veri elde ettiğinizde, daha sonra geri alınabilmesi için etkin bir şekilde saklanması gerekir.

JSON'a kaydedin:


import json

# Çıkarılmış içeriğe sahip bir `data` değişkeniniz olduğunu varsayarsak
with open('output.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

Daha sonra, verileri gereksinimlerinize göre analiz edebilir veya değiştirebilirsiniz.

Adım 8: Veri Toplamayı Otomatikleştirme

Otomatik güncellemeleri ayarlamak, komut dosyanızı kendiniz çalıştırmaktan daha iyi olacaktır.

Aşağıda bir otomasyon komut dosyası örneği verilmiştir:


import time

def main():
    # Verileri ayıklamak ve kaydetmek için kodunuz
    print("Data harvesting...")

# Her 6 saatte bir çalıştırın
while True:
    main()
    time.sleep(6 * 60 * 60)

Zorluklar ve Etik Hususlar

Google Docs veri kazıma işlemi basit görünse de, belirli zorluklar şunlardır:

  • Erişim kısıtlamaları - "herkese açık" olarak işaretlenmiş belgeler, çeşitli ayarlar için engelsiz tam erişime izin vermeyebilir.
  • HTML yapısındaki değişiklikler - arka uç kodunu her an değiştirebilir. Bugün işlevsel olan yarın işlevsel olmaktan çıkabilir.
  • Güncelleme zorluğu - bir belge sık sık güncelleniyorsa, verileri en verimli şekilde nasıl yakalayacağınızı belirleyin.

Sonuncusu ve kesinlikle en önemlisi etiktir:

  • Telif hakkı veya gizlilik kurallarını ihlal etmeyin.
  • Toplanan verilerin kamuya açık nitelikteki belgelerden elde edildiğinden emin olun.
  • Hizmetlerin kullanım koşullarını asla göz ardı etmeyin, çünkü bunlar yasaklanmanıza veya size karşı yasal işlem başlatılmasına neden olabilir.

Sonuç

Python kullanarak Google Docs veri kazıma konusunu derinlemesine inceledik. Projenizin karmaşıklık düzeyi, HTML kazıma yöntemini mi yoksa Google Docs API'sini mi seçeceğinizi belirleyecektir. Kamuya açık belgelerle uğraşırken dikkatli olmak ve web kazımanın yasal sonuçlarını göz önünde bulundurmak en iyisidir.

Bu tür bir kazıma, araştırma yapmak, değişiklikleri izlemek ve özel hizmetler geliştirmek gibi geniş olanaklar sağlar. Bu bilgilerle, Python kullanarak genel Google dokümanlarını kazıma işlemini sorunsuz bir şekilde otomatikleştirebilir ve yinelenen görevlerin otomasyonunu kolaylaştırabilirsiniz.

Yorumlar:

0 yorumlar