Python ile Web Kazıma: Başlangıç Kılavuzu
Yayınlanan: 2016-10-10Büyük Veri dünyasında, Web Kazıma veya Veri çıkarma hizmetleri, Büyük Veri Analitiği için birincil gereksinimlerdir. Web'den veri çekmek, şirketlerin işlerinde kalmaları için neredeyse kaçınılmaz hale geldi. Ortaya çıkan bir sonraki soru, yeni başlayanlar olarak web kazıma işleminin nasıl yapılacağıdır.

Veriler, bir dizi yöntem kullanılarak bir web kaynağından çıkarılabilir veya kazınabilir. Google, Facebook veya Twitter gibi popüler web siteleri, mevcut verileri yapılandırılmış bir şekilde görüntülemek ve çıkarmak için API'ler sunar. Bu, API sağlayıcısı tarafından tercih edilmeyebilecek diğer yöntemlerin kullanılmasını engeller. Ancak, bir web sitesini tarama talebi, bilgi web sitesi tarafından kolayca sunulmadığında ortaya çıkar. Açık kaynaklı bir programlama dili olan Python, basit ve zengin ekosistemi nedeniyle Web Scraping için sıklıkla kullanılır. Bu görevi yürüten “BeautifulSoup” adlı bir kütüphane içerir. Python kullanarak web kazıma işlemine daha derin bir göz atalım.
Bir Python Ortamı Kurmak:
Python kullanarak web kazıma yapmak için, önce python dilinde yazılmış kodu çalıştırmanızı sağlayan Python Ortamını kurmanız gerekir. Kütüphaneler veri kazıma gerçekleştirir;
Güzel Çorba , kullanımı kolay bir python kütüphanesidir. Bir web sayfasından bilgi çıkarmak için en iyi araçlardan biridir. Profesyoneller, web sayfalarından tablolar, listeler veya paragraflar biçimindeki bilgileri tarayabilir. Urllib2, web sayfalarını getirmek için BeautifulSoup kitaplığı ile birlikte kullanılabilen başka bir kitaplıktır. Web sayfalarından belirli bilgileri çıkarmak için filtreler eklenebilir. Urllib2 , URL'leri getirebilen bir Python modülüdür.
MAC OSX için:
Python kitaplıklarını MAC OSX'e kurmak için, kullanıcıların bir terminal kazancı açması ve her seferinde tek bir komut olacak şekilde aşağıdaki komutları yazması gerekir:
sudoeasy_install pip'i
pip kurulumu BeautifulSoup4
pip kurulum lxml
Windows 7 ve 8 kullanıcıları için:
Windows 7 & 8 kullanıcılarının önce python ortamının kurulduğundan emin olmaları gerekir. Ortam kurulduktan sonra, komut istemini açın ve C:/ dizininin kök yolunu bulun ve aşağıdaki komutları yazın:
easy_install GüzelSoup4
easy_installlxml
Kitaplıklar kurulduktan sonra, bir veri kazıma kodu yazmanın zamanı geldi.
Python'u Çalıştırmak:
Veri kazıma, bir perakende mağazasının mevcut stokunu taramak gibi belirgin bir amaç için yapılmalıdır. İlk olarak, bu verileri içeren web sitesinde gezinmek için bir web tarayıcısı gerekir. Tabloyu belirledikten sonra üzerinde herhangi bir yere sağ tıklayın ve ardından açılır menü listesinden inspect öğesini seçin. Bu, web sitesinin Html kodunu görüntüleyen ekranınızın altında veya yanında bir pencerenin açılmasına neden olur. Sıralamalar bir tabloda görünür. Web sayfasındaki tabloyu vurgulayan kod satırını bulana kadar HTML verilerini taramanız gerekebilir.
Python, BeautifulSoup dışında HTML kazıma için başka alternatifler sunar. Onlar içerir:
- cıvıl cıvıl
- karalama işareti
- mekanize etmek
Web kazıma, HTML kodundaki yapılandırılmamış verileri bir Excel çalışma sayfasındaki tablo verileri gibi yapılandırılmış veri formuna dönüştürür. Web kazıma, Google Dokümanlar'ın kullanımından programlama dillerine kadar birçok şekilde yapılabilir. Herhangi bir programlama bilgisi veya teknik yetkinliği olmayan kişiler için, tercih ettiğiniz web sitelerinden kullanıma hazır veri sağlayan web scraping servislerini kullanarak web verilerini elde etmek mümkündür.
HTML Etiketleri:
Web kazıma işlemini gerçekleştirmek için, kullanıcıların sağlam bir HTML etiketleri bilgisine sahip olması gerekir. HTML bağlantılarının bağlantı etiketi, yani <a> etiketi, “<a href=“https://…”>Bağlantının burada olması gerekiyor </a>” kullanılarak tanımlandığını bilmek çok yardımcı olabilir. Bir HTML listesi, <ul> (sırasız) ve <ol> (sıralı) listesinden oluşur. Liste öğesi <li> ile başlar.
HTML tabloları <Table>, satır <tr> ile tanımlanır ve sütunlar <td> olarak verilere ayrılır;
- <!DOCTYPE html> : Bir HTML belgesi, bir belge türü bildirimi ile başlar
- HTML belgesinin biçimlendirilmemiş, düz metindeki ana kısmı, <body> ve </body> etiketleri ile tanımlanır.
- HTML'deki başlıklar, <h1> ile <h5> arasındaki başlık etiketleri kullanılarak tanımlanır.
- Paragraflar HTML'de <p> etiketi ile tanımlanır
- <html> ve </html> arasında bir HTML belgesinin tamamı bulunur
BeautifulSoup'u Kazımada Kullanma:

BeautifulSoup kullanarak bir web sayfasını kazırken, asıl mesele nihai hedefi belirlemektir. Örneğin, web sayfasından bir liste çıkarmak istiyorsanız, adım adım bir yaklaşım gereklidir:
- İlk ve en önemli adım, gerekli kitaplıkları içe aktarmaktır:
#bir web sitesini sorgulamak için kullanılan kitaplığı içe aktar
urllib2'yi içe aktar
#url wiki'yi belirtin = “https://”
#Web sitesini sorgulayın ve html'yi 'sayfa' değişkenine döndürün
sayfa = urllib2.urlopen(wiki)
#web sitesinden döndürülen verileri ayrıştırmak için Güzel çorba işlevlerini içe aktarın
bs4'ten BeautifulSoup'u içe aktarın
#'page' değişkenindeki html'yi ayrıştırın ve onu Güzel Çorba formatında saklayın
çorba = BeautifulSoup(sayfa)
- HTML sayfasının iç içe yapısını görselleştirmek için "güzelleştirme" işlevini kullanın
- Çorba etiketleriyle çalışma:
Soup<tag>, etiket dahil açılış ve kapanış etiketi arasında içerik döndürmek için kullanılır.
- In[30]:soup.title
Çıkan[30]:<title>2010'a Kadar Hindistan'daki Başkanların Listesi – Wikipedia, özgür ansiklopedi</title>
- çorba.<tag>.string: Belirtilen etiket içinde dize döndürür
- [38]:soup.title.string içinde
- Out[38]:u 'Hindistan ve Brezilya'da 2010'a Kadar Hindistan'daki Başkanların Listesi – Wikipedia, özgür ansiklopedi'
- Sayfanın <a> etiketleri içindeki tüm bağlantıları bulun: “<a>” etiketini kullanarak bir bağlantıyı etiketleyin. Bu nedenle, çorba.a seçeneğiyle gidin ve web sayfasında bulunan bağlantıları döndürmelidir. Haydi Yapalım şunu.
- [40]:soup.a'da
Çıkış[40]:<a id=”top”></a>
- Doğru tabloyu bulun:
2010 yılına kadar Hindistan ve Brezilya'daki Cumhurbaşkanları hakkında bilgi toplamak için bir tablo aranırken, öncelikle doğru tablonun belirlenmesi önemlidir. İşte tüm tablo etiketlerinde bulunan bilgileri taramak için bir komut.
all_tables=çorba.find_all('tablo')
Doğru tabloyu filtrelemesi gereken tablonun “sınıf” özelliğini kullanarak doğru tabloyu belirleyin. Ardından, web sayfasının gerekli tablosuna sağ tıklayarak sınıf adını aşağıdaki gibi inceleyin:
- Öğeyi incele
- Sınıf adını kopyalayın veya son komutun çıktısından doğru tablonun sınıf adını bulun.
right_table=soup.find('table', class_='wikitable sıralanabilir düz başlıklar')
sağ_tablo
Doğru tabloyu bu şekilde belirleyebiliriz.
- Bilgileri DataFrame'e çıkarın: Her satırda (tr) yineleme yapılması ve ardından tr (td) öğesinin her öğesini bir değişkene atamak ve onu bir listeye eklemek gerekir. Tablonun tablonun HTML yapısını inceleyelim. (<th> tablo başlığı için bilgi ayıklayın)
Her bir elemanın değerine erişmek için her bir eleman ile “find(text=True)” seçeneğinin kullanılması gerekmektedir. Son olarak, dataframe'de veri var.
"BeautifulSoup" kullanarak verileri taramanın, web sayfalarından veri toplamaya yönelik manuel çabayı azaltan çeşitli başka yolları da vardır. BeautifulSoup'ta yazılan kodun normal ifadelerden daha sağlam olduğu kabul edilir. Bahsettiğimiz web kazıma yöntemi Python'da "BeautifulSoup" ve "urllib2" kitaplıklarını kullanır. Bu, web kazıma için Python'u kullanmaya başlamak için kısa bir başlangıç kılavuzuydu.
Web kazımanın gelir büyümenizi nasıl etkilediğiyle ilgili bir sonraki makalemiz için bizi izlemeye devam edin.
Veri bilimi için web'den veri almayı mı planlıyorsunuz? Yardım etmek için buradayız. Gereksinimleriniz hakkında bize bilgi verin.
