Web Scraping: HTML'den Bağlantı Kazıma

Verilerin Kazınması, Gruplanması ve Kaydedilmesi

Web Scraping: Sonsuz Kaydırmalı Sayfalardan Metin Kazıma başlıklı yazıda da bahsettiğim üzere, bir süre veri kazıma ile ilgili yazılar ve örnekler paylaşmaya çalışacağım. Bu yazıda değineceğim konu ise kontrolden çıkan ve düzenlemek istediğim Chrome Sık Kullanılanlar (Bookmarks) içeriğini kullanacağım.

AA

Yazıda değineceğim örnek işlemdeki amaç dışa aktarılan dosyadaki bağlantıları kazımak ve yeniden organize etmek. Gerekli görülmesi durumunda bağlantı durum kontrolleri ve yeniden bookmark dosyası olarak kayıt oluşturulması gibi işlemler de dahil edilebilir. Aşağıda yer alan kod için temel alınan format ile başlayabiliriz.

Google Bookmarks

Google Chrome, Sık Kullanılanlar (Bookmarks)1 içeri aktarma ve dışarı aktarma işlemlerinde aşağıdaki yapıyı temel almakta. Bu yapı içerisinde, DT > H3 dizinleri, DL alt dizinleri ve P içerikleri ifade etmekte.

<DL><p>
    <DT><H3 ADD_DATE="..." LAST_MODIFIED="..." PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Bar</H3>
    <DL><p>
        <DT><H3 ADD_DATE="..." LAST_MODIFIED="...">Training</H3>
        <DL><p>
            <DT><A HREF="..." ADD_DATE="..." ICON="...">...</A>
            <DT><A HREF="..." ADD_DATE="..." ICON="...">...</A>
            <DT><A HREF="..." ADD_DATE="..." ICON="...">...</A>
        </DL><p>
    </DL><p>
</DL><p>

Data Scraping repo'su, her biri ayrı bir scraping projesi içeren alt dizinlerin bir koleksiyonudur. Projelerimiz hakkında daha fazla bilgi edinebileceğiniz depo ana sayfasını burada bulabilirsiniz.

Repo içerisinde yer alan bookmarks.html dosyası örnek olarak incelenebilir.

Data Scraping reposu içerisinde yer alan google-chrome-bookmarks ile dışa aktarılan HTML dosyası içeriği yeniden düzenlenebilir ve CSV olarak kaydedilebilir. Düzenleme işleminde, ön tanımlı olarak sunulan exclusion_domains parametresi düzenleme işleminde hariç tutulacak alan adlarını, separate_domains ise ayrı bir CSV dosyası olarak edinilmesi istenen alan adlarını ifade etmekte.

Aşağıda scrape_html için örnek kullanım yer almakta.

scrape_html(
    input_path="/Users/user/Desktop/Data-Scraping/google-chome-bookmarks/bookmarks.html",
    output_dir="/Users/user/Desktop",
    filename="bookmark",
    extension="csv",
    strip_char="...",
    max_text_length=50,
    exclusion_domains=["facebook.com", "twitter.com"],
    separate_domains={
        "eksisozluk.com": "eksisozluk_links",
        "etsy.com": "etsy_links",
        "tr.pinterest.com": "pinterest_links",
        "imdb.com": "imdb_links",
    }
)

Kod çalıştırıldığında output_dir kontrol edilmekte ve scrape_html ile belirtilen şekilde işlem uygulanmakta.

.
├── bookmark.csv
├── eksisozluk_links.csv
├── etsy_links.csv
├── github_links.csv
├── imdb_links.csv
├── medium_links.csv
├── pinterest_links.csv
└── youtube_links.csv

1 directory, 8 files

Çalışma sonucunda elde edilecek dizin içeriği yukarıdaki dizin/dosya yapısı ile benzerlik gösterecektir.