yardım etmek mi istiyorsunuz? İşte seçenekleriniz:","Crunchbase","Hakkımızda","Muhteşem destek için herkese teşekkürler!","Hızlı Bağlantılar","Ortaklık programı","ProxyScrape premium deneme","Çevrimiçi Proxy Denetleyicisi","Proxy türleri","Vekil ülkeler","Proxy kullanım durumları","Önemli","Çerez politikası","Sorumluluk Reddi","Gizlilik Politikası","Şartlar ve koşullar","Sosyal Medya","Facebook","LinkedIn","Twitter","Quora","Telgraf","Discord"," © Telif Hakkı 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Belçika | KDV BE 0749 716 760"]}
Web scraping can be defined as the method of collecting and restructuring data from websites. It can also be defined as the programmatic approach of obtaining website data in an automated manner. For instance, you want to extract the email IDs of all people who commented on a Facebook post. You can do this by
Web kazıma, web sitelerinden veri toplama ve yeniden yapılandırma yöntemi olarak tanımlanabilir. Web sitesi verilerinin otomatik bir şekilde elde edilmesine yönelik programatik yaklaşım olarak da tanımlanabilir. Örneğin, bir Facebook gönderisine yorum yapan tüm kişilerin e-posta kimliklerini çıkarmak istiyorsunuz. Bunu iki yöntemle yapabilirsiniz. İlk olarak, imleci herhangi bir kişinin e-posta adresi dizesine getirebilirsiniz. Daha sonra bunu kopyalayıp bir dosyaya yapıştırabilirsiniz. Bu yöntem manuel kazıma olarak bilinir. Peki ya 2000 e-posta kimliği toplamak istiyorsanız? Bir web kazıma aracının yardımıyla, tüm e-posta kimliklerini manuel kazıma kullanırsanız 3 saat yerine 30 saniye içinde çıkarabilirsiniz.
Web sitelerinden bilgi almak için web kazıma araçlarını kullanabilirsiniz. Yalnızca nasıl tıklayacağınızı bilmeniz yeterlidir ve programlama bilgisi gerekmez. Bu araçlar kaynak verimlidir ve zaman ve maliyet tasarrufu sağlar. Ağ bant genişlikleri hakkında endişelenmeden ihtiyaçlarınıza göre milyonlarca sayfayı kazıyabilirsiniz. Bazı web siteleri, kazıyıcıların veri toplamasını engelleyen anti-botlar uygular. Ancak iyi web kazıma araçları, bu araçları atlamak ve sorunsuz bir kazıma deneyimi sunmak için yerleşik özelliklere sahiptir.
Python, web'den veri kazımak için mükemmel araçlara sahiptir. Örneğin, bir web sayfasından içerik almak için requests kütüphanesini ve ilgili bilgileri çıkarmak için bs4 'ü(BeautifulSoup) içe aktarabilirsiniz. Python'da web kazıma yapmak için aşağıdaki adımları takip edebilirsiniz. Bu web sitesinden bilgi çıkaracağız.
Web sitesinin HTML'sini almak için istek kütüphanesini içe aktarmanız gerekir.
i̇thalat talepleri̇
Web sitesine bir GET isteği yapmanız gerekir. Bunu URL'yi requests.get() fonksiyonuna yapıştırarak yapabilirsiniz.
r = requests.get('http://www.cleveland.com/metro/index.ssf/2017/12/case_western_reserve_university_president_barbara_snyders_base_salary_and_bonus_pay_tops_among_private_colleges_in_ohio.html')
Web sitesinin içeriğini r.content kullanarak çıkarın. Web sitesinin içeriğini bayt cinsinden verir.
c = r.content
Web sayfalarından bilgi kazımayı kolaylaştırdığı için BeautifulSoup kütüphanesini içe aktarmanız gerekir.
from bs4 import BeautifulSoup
İçerikten bir BeautifulSoup nesnesi oluşturmanız ve birkaç yöntem kullanarak bunu ayrıştırmanız gerekir.
soup = BeautifulSoup(c)
print(soup.get_text())
Bunun gibi bir çıktı (bu sadece bir parça) elde edeceksiniz.
İstediğimiz verileri çıkarmak için doğru CSS seçicilerini bulmamız gerekiyor. Web sayfasındaki ana içeriği soup nesnesinin .find() metodunu kullanarak bulabiliriz.
main_content = soup.find('div', attrs = {'class': 'entry-content'})
Çorbanın.text özelliğini kullanarak bilgileri tablodan metin olarak alabiliriz.
content = main_content.find('ul').text
print(içerik)
Tablonun metnini bir dize olarak aldık. Ancak metin dizesinin belirli kısımlarını çıkarırsak bilgi çok işe yarayacaktır. Bu görevi başarmak için Düzenli İfadelere geçmemiz gerekir.
Düzenli ifadeler(RegEx), bir arama kalıbı tanımlayan kalıplar dizisidir. Temel fikir şudur:
Metin tablosundan aşağıdaki bilgileri çıkarmak istediğimizi varsayalım.
Aşağıda belirtilen adımları izleyerek üç bilgi parçasını çıkarabilirsiniz.
re öğesini içe aktarın ve maaşları ayıklamak için bir maaş kalıbı oluşturmanız gerekir. Bir dize olarak sağlanan düzenli ifade kalıbını bir RegEx kalıp nesnesine derlemek için re.compile() yöntemini kullanın. Ayrıca, tüm eşleşmeleri bulmak ve bunları bir dize listesi olarak döndürmek için pattern.findall() yöntemini kullanabilirsiniz. Her dize bir eşleşmeyi temsil edecektir.
yeniden içe aktar
salary_pattern = re.compile(r'\$.+')
salaries = salary_pattern.findall(content)
Kolejlerin isimlerini çıkarmak için aynı prosedürü tekrarlayın. Bir kalıp oluşturun ve isimleri çıkarın.
school_pattern = re.compile(r'(?:,|,\s)([A-Z]{1}.*?)(?:\s\(|:|,)')
schools = school_pattern.findall(content)
print(schools)
print(salaries)
Başkanların isimlerini çıkarmak için aynı prosedürü tekrarlayın. Bir kalıp oluşturun ve gerekli isimleri çıkarın.
name_pattern = re.compile(r'^([A-Z]{1}.+?)(?:,)', flags = re.M)
names = name_pattern.findall(content)
print(names)
Maaşlar dağınık görünüyor ve anlaşılabilir değil. Bu nedenle, dize maaşlarını sayılara dönüştürmek için Python liste kavramasını kullanıyoruz. İstediğimiz sonuçları elde etmek için string dilimleme, bölme ve birleştirme ve liste kavrama yöntemlerini kullanacağız.
salaries = ['$876,001', '$543, 903', '$2453, 896']
[int(''.join(s[1:].split(',')) for s in salaries]
Çıktı şu şekildedir:
Veri görselleştirme verileri görsel olarak anlamanıza yardımcı olur, böylece eğilimler, modeller ve korelasyonlar ortaya çıkarılabilir. Aykırı değerleri belirlemek ve değerli içgörüler elde etmek için büyük miktarda veriyi grafiklere, çizelgelere ve diğer görsellere dönüştürebilirsiniz.
Verileri görselleştirmek için aşağıda gösterildiği gibi matplotlib kullanabiliriz.
Gerekli kütüphaneleri aşağıda gösterildiği gibi içe aktarın.
import pandas as pd
import matplotlib.pyplot as plt
Okullar, isimler ve maaşlardan oluşan bir pandas veri çerçevesi oluşturun. Örneğin, okulları şu şekilde bir veri çerçevesine dönüştürebilirsiniz:
df_okul = pd.DataFrame(okullar)
Baskı(df_school)
Çıktı şudur:
Aynı şekilde, maaşlar ve isimler için de aynısını yapabilirsiniz.
Veri görselleştirme için aşağıda gösterildiği gibi bir çubuk grafik çizebiliriz.
df.plot(kind='barh', x = 'President', y = 'salary')
Çıktı şu şekildedir:
Web kazıma, işletmelerin veri destekli hizmetler sunmak ve veriye dayalı kararlar almak için pazar bilgileri ve sektörler hakkında yararlı bilgiler edinmesine yardımcı olur. Proxy'ler, aşağıdaki nedenlerden dolayı çeşitli web sitelerinden etkili bir şekilde veri kazımak için gereklidir.
Yukarıdaki avantajları elde etmek için kaç vekil gerektiğini biliyor musunuz? Bu formülü kullanarak gerekli vekil sayısını hesaplayabilirsiniz:
Proxy sayısı = Erişim isteği sayısı / Tarama Hızı
Erişim taleplerinin sayısı aşağıdaki parametrelere bağlıdır.
Öte yandan, tarama oranı kullanıcının belirli bir süre içinde yaptığı istek sayısı ile sınırlıdır. Bazı web siteleri, otomatik ve insan kullanıcı isteklerini ayırt etmek için kullanıcı başına sınırlı sayıda isteğe izin verir.
Aşağıdaki adımları takip ederek Python'da proxy kullanabilirsiniz.
i̇thalat talepleri̇
proxy = 'http://114.121.248.251:8080'
url = 'https://ipecho.net/plain'
page = requests.get(url,
proxies={"http": proxy, "https": proxy})
Baskı(sayfa.metin)
Çıktı şu şekildedir:
Manuel kazıma yerine web sitelerinden veri çıkarmak için web kazıma yöntemini kullanabileceğimizi tartıştık. Web kazıma, uygun maliyetli ve zaman kazandıran bir süreçtir. İşletmeler, veriye dayalı kararlar almak ve değerli içgörüler elde etmek için web bilgilerini toplamak ve yeniden yapılandırmak için kullanırlar. Proxy kullanımı, kullanıcının orijinal IP adresini hedef web sitesinden gizlediği için güvenli web kazıma için gereklidir. Web kazıma için veri merkezi veya konut proxy'leri kullanabilirsiniz. Ancak hızlı oldukları ve kolayca tespit edilemedikleri için konut proxy'lerini kullanmayı tercih edin. Ayrıca, dizgi kümelerini eşleştirmek veya bulmak için Python'da düzenli ifadeler kullanabiliriz. Bu, düzenli ifadeler yardımıyla metinden herhangi bir dize kalıbını çıkarabileceğimiz anlamına gelir. Ayrıca, veri görselleştirmenin hacimli miktarda veriyi, anormallikleri tespit etmemize ve verilerdeki yararlı eğilimleri belirlememize yardımcı olan çizelgelere, grafiklere ve diğer görsellere dönüştürdüğünü gördük.