Web Kazıma

Python kullanarak web kazıma

Python kullanarak web kazıma
Web kazıma, internet web sitelerinden çok büyük miktarda bilgi çıkarmanın ve işlemenin otomatik bir yoludur. İnternet sitelerindeki veriler yapılandırılmamıştır, bu veriler web kazıma yoluyla toplanabilir ve yapılandırılabilir. Google, Bing, Yahoo gibi arama motorlarında, internet sitelerindeki verileri sıyıran ve arama sayfalarında indeksleyen botlar bulunur. Veriler, muhtemelen web'den veri çıkarmanın en iyi yollarından biri olan API'ler kullanılarak da çıkarılabilir. Facebook, Google, Amazon gibi ünlü web siteleri, kullanıcılara verilerle etkileşim kurmaları için iyi yapılandırılmış API'ler sağlar, ancak bu API'leri her yerde görmezsiniz.

Örneğin, indirim teklifleri için favori ürünleriniz hakkında düzenli güncellemeler almak istiyorsanız veya favori sezonun bölümlerini tek tek indirme işlemini otomatikleştirmek istiyorsanız ve web sitesinde bunun için herhangi bir API yoksa, o zaman tek seçenek geriye kalan web kazıma.Web kazıma, bir web sitesinin izin verip vermemesine bağlı olarak bazı web sitelerinde yasa dışı olabilir. Web siteleri “robotlar” kullanır.Hurdaya çıkarılmasına izin verilmeyen URL'leri açıkça tanımlamak için robots.txt" dosyası. Web sitesinin izin verip vermediğini robotlar ekleyerek kontrol edebilirsiniz.txt” ile web sitesinin alan adı. Örneğin, https://www.Google.com/robotlar.Txt

Bu yazıda, kurulumu ve kullanımı çok kolay olduğu için kazıma için Python kullanacağız. Verileri kazımak ve düzenlemek için kullanılabilecek birçok yerleşik ve üçüncü taraf kitaplığına sahiptir. Web sayfasını getirmek için “urllib” ve programlama işlemlerini uygulamak için web sayfasını ayrıştırmak için “BeautifulSoup” adlı iki Python kitaplığı kullanacağız.

Web Kazıma nasıl çalışır??

Verileri sıyırmak istediğiniz web sayfasına bir istek gönderiyoruz. Web sitesi, talebe sayfanın HTML içeriği ile yanıt verecektir. Ardından, daha fazla işlem için bu web sayfasını BeautifulSoup'a ayrıştırabiliriz. Web sayfasını getirmek için Python'da “urllib” kütüphanesini kullanacağız.

Urllib, web sayfası içeriğini HTML olarak indirecek. İçerik çıkarma ve daha fazla işleme için bu HTML web sayfasına dize işlemleri uygulayamıyoruz. İçeriği ayrıştıracak ve ilginç verileri çıkaracak bir Python kütüphanesi “BeautifulSoup” kullanacağız.

Linuxhint'ten makaleleri kazıma.com

Artık web kazımanın nasıl çalıştığına dair bir fikrimiz olduğuna göre, biraz pratik yapalım. Makale başlıklarını ve linkleri Linuxhint'ten sıyırmaya çalışacağız.com. Bu yüzden https://linuxhint'i açın.com/ tarayıcınızda.

Şimdi web sayfasının HTML kaynak kodunu görüntülemek için CRTL+U tuşlarına basın.

Kaynak kodunu kopyalayın ve https://htmlformatter adresine gidin.com/ kodu güzelleştirmek için. Kodu güzelleştirdikten sonra, kodu incelemek ve ilginç bilgiler bulmak kolaydır.

Şimdi, biçimlendirilmiş kodu tekrar kopyalayın ve atom, yüce metin vb. gibi favori metin düzenleyicinize yapıştırın. Şimdi Python kullanarak ilginç bilgileri kazıyacağız. Aşağıdakileri yazın

// Güzel bir çorba kütüphanesi kurun, urllib geliyor
Python'da önceden yüklenmiş
ubuntu@ubuntu:~$ sudo pip3 bs4'ü kurun
ubuntu@ubuntu:~$ python3
piton 3.7.3 (varsayılan, 7 Ekim 2019, 12:56:13)
[GCC 8.3.0] linux üzerinde

Daha fazla bilgi için "yardım", "telif hakkı", "kredi" veya "lisans" yazın.

//urllib'i içe aktar
>>> urllib'i içe aktar.istek
// BeautifulSoup'u içe aktar
>>> bs4'ten BeautifulSoup'u içe aktarın
// Getirmek istediğiniz URL'yi girin
>>> my_url = 'https://linuxhint.iletişim /'
//urlopen komutunu kullanarak URL web sayfasını isteyin
>>> müşteri = urllib.istek.urlopen(my_url)
//HTML web sayfasını “html_page” değişkeninde saklayın
>>> html_page = müşteri.oku()
//Web sayfasını getirdikten sonra URL bağlantısını kapatın
>>> müşteri.kapat()
// HTML web sayfasını kazıma için BeautifulSoup'a ayrıştırın
>>> page_soup = BeautifulSoup(html_page, "html.ayrıştırıcı")

Şimdi ilgimizi çeken şeyleri bulmak için az önce kopyalayıp yapıştırdığımız HTML kaynak koduna bakalım.

Linuxhint'te listelenen ilk makalenin.com, “74 Bash Operators Samples” olarak adlandırılmıştır, bunu kaynak kodunda bulun. Başlık etiketleri arasına alınır ve kodu



class="category-1561">BASH Programlama


title="74 Bash Operatör Örnekleri">74 Bash Operatörleri
Örnekler


Aynı kod, sadece makale başlıklarının ve bağlantılarının değiştirilmesiyle tekrar tekrar tekrarlanır. Sonraki makale aşağıdaki HTML koduna sahiptir



class="category-1343">Ubuntu
Vernik


title="Ubuntu 18'de Vernik önbelleği nasıl kurulur.04">
Ubuntu 18'de Vernik önbelleği nasıl kurulur.04


Bu ikisi de dahil olmak üzere tüm makalelerin aynı “

” etiketi ve aynı “giriş-başlığı” sınıfını kullanın. Güzel Çorba kitaplığındaki “findAll” fonksiyonunu kullanarak tüm “bütün”leri bulup listeleyebiliriz

"giriş başlığı" sınıfına sahip. Python konsolunuza aşağıdakini yazın

// Bu komut tüm “

” adlı sınıfa sahip etiket öğeleri
“giriş başlığı”. Çıktı bir dizide saklanacak.
>>> makaleler = page_soup.hepsini bul ("h2" ,
"sınıf": "giriş başlığı")
// Linuxhint'in ön sayfasında bulunan makale sayısı.com
>>> len(makaleler)
102
// İlk çıkarılan “

” makale adını ve bağlantısını içeren etiket öğesi
>>> makaleler[0]


title="74 Bash Operatör Örnekleri">
74 Bash Operatör Örnekleri


// İkinci çıkarılan “

” makale adını ve bağlantısını içeren etiket öğesi
>>> makaleler[1]


title="Ubuntu 18'de Vernik önbelleği nasıl kurulur.04">
Ubuntu 18'de Vernik önbelleği nasıl kurulur.04


// Metin işlevini kullanarak yalnızca HTML etiketlerindeki metni görüntüleme
>>> makaleler[1].Metin
'Ubuntu 18'de Vernik önbelleği nasıl kurulur.04'

Artık 102 HTML'nin tamamının bir listesine sahip olduğumuza göre "

” makale bağlantısı ve makale başlığı içeren etiket öğeleri. Hem makale bağlantılarını hem de başlıkları ayıklayabiliriz. Bağlantıları çıkarmak için “” etiketleri için aşağıdaki kodu kullanabiliriz

// Aşağıdaki kod, bağlantıyı ilk önce çıkaracaktır

etiket öğesi
>>> makalelerdeki bağlantı için[0].find_all('a', href=Doğru):
…    yazdır(bağlantı['href'])

https://linuxhint.com/bash_operator_examples/

Şimdi her “ boyunca yinelenen bir for döngüsü yazabiliriz

"makaleler" listesindeki ” etiket öğesini ve makale bağlantısını ve başlığını çıkarın.

>>> i aralığında (0,10):
…    yazdır(makaleler[i].Metin)
…    makalelerdeki bağlantı için[i].find_all('a', href=Doğru):
…              print(link['href']+"\n")

74 Bash Operatör Örnekleri
https://linuxhint.com/bash_operator_examples/
Ubuntu 18'de Vernik önbelleği nasıl kurulur.04
https://linuxhint.com/varnish_cache_ubuntu_1804/
PineTime: Linux Dostu Bir Akıllı Saat
https://linuxhint.com/pinetime_linux_smartwatch/
Bütçeyle Satın Alınabilecek En İyi 10 Linux Dizüstü Bilgisayar
https://linuxhint.com/best_cheap_linux_laptops/
Hiç Linux Sürümü Olmayan Linux için HD Remastered Oyunlar…
https://linuxhint.com/hd_remastered_games_linux/
Linux için 60 FPS Ekran Kaydı Uygulamaları
https://linuxhint.com/60_fps_screen_recording_apps_linux/
74 Bash Operatör Örnekleri
https://linuxhint.com/bash_operator_examples/
… kırpmak…

Benzer şekilde, bu sonuçları bir JSON veya CSV dosyasına kaydedersiniz.

Sonuç

Günlük görevleriniz yalnızca dosya yönetimi veya sistem komut yürütmesi değildir. Ayrıca, Python'da web'i kazıyarak dosya indirme otomasyonu veya veri çıkarma gibi web ile ilgili görevleri otomatikleştirebilirsiniz. Bu makale yalnızca basit veri çıkarma ile sınırlıydı, ancak “urllib” ve “BeautifulSoup” kullanarak büyük görev otomasyonu yapabilirsiniz.

Linux için En İyi Komut Satırı Oyunları
Komut satırı, Linux kullanırken yalnızca en büyük müttefikiniz değil, aynı zamanda eğlence kaynağı da olabilir, çünkü onu özel bir grafik kartı gerekt...
Linux için En İyi Gamepad Eşleme Uygulamaları
Tipik bir klavye ve fare giriş sistemi yerine bir gamepad ile Linux'ta oyun oynamayı seviyorsanız, sizin için bazı faydalı uygulamalar var. Çoğu PC oy...
Linux Oyuncuları için Faydalı Araçlar
Linux'ta oyun oynamayı seviyorsanız, oyun deneyimini geliştirmek için Wine, Lutris ve OBS Studio gibi uygulamaları ve yardımcı programları kullanmış o...