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"]}
Haberler, dünya çapında neler olup bittiğini öğrenmenin en iyi yoludur. Veri mühendisleri için haber makaleleri, gerçeküstü miktarda veri toplamanın en iyi yollarından biridir. Daha fazla veri, daha fazla içgörü anlamına gelir ve bu da teknolojimizi yenilemek ve insanlığımızı her zamankinden daha yükseklere taşımak için tek yoldur. Ancak çok fazla haber var ve tüm verileri manuel olarak almak insani olarak imkansız. Verileri otomatik olarak almanın en iyi yolu nedir? Cevap, python kullanarak haber makaleleri için web kazıma.
Bu makalede, farklı gazetelerden en son haber makalelerini kazımak ve bunları metin olarak saklamak için bir web kazıyıcı oluşturacağız. Tüm sürecin nasıl yapıldığına dair derinlemesine bir analize sahip olmak için aşağıdaki iki adımdan geçeceğiz.
Python kullanarak haber makaleleri için web kazıma işleminin nasıl yapılacağı hakkında daha fazla bilgi edinmek için herhangi bir bölüme atlamaktan çekinmeyin
Herhangi bir web sitesinden veya web sayfasından önemli bilgileri çekmek istiyorsak, o web sitesinin nasıl çalıştığını bilmek önemlidir. Herhangi bir web tarayıcısı (Chrome, Firefox, Mozilla, vb.) kullanarak belirli bir URL'ye gittiğimizde, o web sayfası üç teknolojinin birleşiminden oluşur,
HTML (HyperText Markup Language): HTML, web sayfasının içeriğini tanımlar. Web sitesine içerik eklemek için kullanılan standart işaretleme dilidir. Örneğin, web sitenize metin, resim veya başka herhangi bir şey eklemek istiyorsanız, HTML bunu yapmanıza yardımcı olur.
CSS (Basamaklı Stil Sayfaları): Web sayfalarını şekillendirmek için kullanılır. CSS, belirli bir web sitesinde gördüğünüz tüm görsel tasarımları yönetir.
JavaScript: JavaScript bir web sayfasının beynidir. JavaScript tüm mantık işlemlerini ve web sayfası işlevselliğini yönetir. Böylece içerik ve stilin etkileşimli hale getirilmesini sağlar.
Bu üç programlama dili, bir web sayfasının özelliklerini oluşturmamıza ve değiştirmemize olanak tanır.
Bu makale için bir web sayfasının ve HTML'nin temellerini bildiğinizi varsayıyorum. Divler, etiketler, başlıklar gibi bazı HTML kavramları bu web kazıyıcıyı oluştururken çok faydalı olabilir. Her şeyi bilmenize gerek yok, sadece web sayfası tasarımının temellerini ve bilgilerin nasıl içerildiğini bilmeniz yeterli.
Python, bir web sayfasından bilgi kazımamıza izin veren çeşitli paketlere sahiptir. BeautifulSoup ile devam edeceğiz çünkü web kazıma için en ünlü ve kullanımı kolay Python kütüphanelerinden biridir.
BeautifulSoup, bir URL'nin HTML içeriğini ayrıştırmak ve ona etiketler ve etiketlerle erişmek için en iyisidir. Bu nedenle web sitesinden belirli metin parçalarını çıkarmak uygun olacaktır.
Sadece 3-5 satır kod ile sihir yapabilir ve internetten seçtiğimiz web sitesinin her türlü metnini çıkarabiliriz, bu da kullanımı kolay ancak güçlü bir paket olduğunu gösterir.
En temelden başlıyoruz. Kütüphane paketini kurmak için Python dağıtımınıza aşağıdaki komutu yazın,
! pip install beautifulsoup4
BeautifulSoup'a herhangi bir sayfanın HTML kodunu sağladığı için 'requests modülünü' de kullanacağız. Kurmak için Python dağıtımınıza aşağıdaki komutu yazın,
! pip yükleme istekleri
Bu istekler modülü, web sayfasından HTML kodunu almamızı ve BeautfulSoup paketini kullanarak gezinmemizi sağlayacaktır. İşimizi çok daha kolaylaştıracak iki komut şunlardır
find_all(element tag, attribute): Bu fonksiyon etiket ve nitelikleri parametre olarak alır ve bir web sayfasındaki herhangi bir HTML öğesini bulmamızı sağlar. Aynı tipteki tüm elemanları tanımlayacaktır. Bunun yerine sadece ilkini almak için find() fonksiyonunu kullanabiliriz.
get_text(): Belirli bir öğeyi bulduktan sonra, bu komut içerideki metni çıkarmamızı sağlar.
Web sayfamızın HTML kodunda gezinmek ve kazımak istediğimiz öğeleri bulmak için, sayfaya sağ tıklayarak veya sadece Ctrl+F tuşlarına basarak 'öğeyi incele' seçeneğini kullanabiliriz. Bu, web sayfasının kaynak kodunu görmenizi sağlayacaktır.
İlgilendiğimiz öğeleri bulduktan sonra, HTML kodunu requests modülü ile alacağız ve bu öğeleri ayıklamak için BeautifulSoup'u kullanacağız.
Bu makale için EL Paris İngilizce gazetesi ile çalışacağız. Ön sayfadan haber başlıklarını ve ardından metni kazıyacağız.
Haber makalelerinin HTML kodunu incelersek, ön sayfadaki makalenin aşağıdaki gibi bir yapıya sahip olduğunu görürüz,
The title has <h2> element with itemprop=”headline” and class=”articulo-titulo” attributes. It has an href attribute containing the text. So we will now extract the text using the following commands:
i̇thalat talepleri̇
from bs4 import BeautifulSoup
requests modülünü kullanarak HTML içeriğini aldıktan sonra, bunu coverpage değişkenine kaydedebiliriz:
# İstek
r1 = requests.get(url)
r1.status_code
# Kapak sayfası içeriğini kapak sayfasına kaydedeceğiz
kapak sayfası = r1.içerik
Daha sonra, çorba değişkenini tanımlayacağız,
# Çorba yaratma
soup1 = BeautifulSoup(coverpage, 'html5lib')
Aşağıdaki kod satırında, aradığımız öğeleri bulacağız,
# Haber tanımlama
coverpage_news = soup1.find_all('h2', class_='articulo-titulo')
final_all kullanarak, tüm oluşumları alıyoruz. Bu nedenle, her bir öğenin bir haber makalesi olduğu bir liste döndürmelidir,
Metni çıkarabilmek için aşağıdaki komutu kullanacağız:
coverpage_news[4].get_text()
Bir niteliğin (bizim durumumuzda bağlantı) değerine erişmek istiyorsak, aşağıdaki komutu kullanabiliriz,
coverpage_news[4]['href']
Bu, bağlantıyı düz metin olarak almamızı sağlayacaktır.
Bu noktaya kadar tüm kavramları kavradıysanız, kendi seçtiğiniz herhangi bir içeriği web kazıyabilirsiniz.
Bir sonraki adım, haber makalesinin her bir içeriğine href niteliği ile erişmeyi, HTML kodundaki paragrafları bulmak için kaynak kodunu almayı ve son olarak bunları BeautifulSoup ile almayı içerir. Bu yukarıda anlattığımız işlemle aynıdır, ancak haber makalesi içeriğini tanımlayan etiketleri ve nitelikleri tanımlamamız gerekir.
Tam işlevsellik için kod aşağıda verilmiştir. Kod yorumlandığı için her satırı ayrı ayrı açıklamayacağım; kişi bu yorumları okuyarak açıkça anlayabilir.
number_of_articles = 5
# İçerik, bağlantılar ve başlıklar için boş listeler
news_contents = []
list_links = []
list_titles = []
for n in np.arange(0, number_of_articles):
# sadece haber makaleleri (albümler ve diğer şeyler de var)
if "inenglish" not in coverpage_news[n].find('a')['href']:
devam et
# Makalenin bağlantısını alma
link = coverpage_news[n].find('a')['href']
list_links.append(link)
# Başlığı almak
title = coverpage_news[n].find('a').get_text()
list_titles.append(başlık)
# İçeriği okuma (paragraflara bölünmüştür)
article = requests.get(link)
article_content = article.content
soup_article = BeautifulSoup(article_content, 'html5lib')
body = soup_article.find_all('div', class_='articulo-cuerpo')
x = body[0].find_all('p')
# Paragrafların birleştirilmesi
list_paragraflar = []
for p in np.arange(0, len(x)):
paragraf = x[p].get_text()
liste_paragraflar.append(paragraf)
final_article = " ".join(list_paragraphs)
news_contents.append(final_article)
Çıkarılan makaleleri aşağıdakilere yerleştirelim:
# df_features
df_features = pd.DataFrame(
{'Article Content': news_contents
})
# df_show_info
df_show_info = pd.DataFrame(
{'Article Title': list_titles,
'Article Link': list_links})
df_features
df_show_info
Daha iyi bir kullanıcı deneyimi tanımlamak için, bir betiğin haberleri almak için harcadığı süreyi de ölçeceğiz. Bunun için bir fonksiyon tanımlayacağız ve sonra çağıracağız. Yine, kod yorumlandığı için her kod satırını açıklamayacağım. Net bir anlayış elde etmek için bu yorumları okuyabilirsiniz.
def get_news_elpais():
# url definition
url = "https://elpais.com/elpais/inenglish.html"
# Request
r1 = requests.get(url)
r1.status_code
# We'll save in coverpage the cover page content
coverpage = r1.content
# Soup creation
soup1 = BeautifulSoup(coverpage, 'html5lib')
# News identification
coverpage_news = soup1.find_all('h2', class_='articulo-titulo')
len(coverpage_news)
number_of_articles = 5
# Empty lists for content, links and titles
news_contents = []
list_links = []
list_titles = []
for n in np.arange(0, number_of_articles):
# only news articles (there are also albums and other things)
if "inenglish" not in coverpage_news[n].find('a')['href']:
continue
# Getting the link of the article
link = coverpage_news[n].find('a')['href']
list_links.append(link)
# Getting the title
title = coverpage_news[n].find('a').get_text()
list_titles.append(title)
# Reading the content (it is divided in paragraphs)
article = requests.get(link)
article_content = article.content
soup_article = BeautifulSoup(article_content, 'html5lib')
body = soup_article.find_all('div', class_='articulo-cuerpo')
x = body[0].find_all('p')
# Unifying the paragraphs
list_paragraphs = []
for p in np.arange(0, len(x)):
paragraph = x[p].get_text()
list_paragraphs.append(paragraph)
final_article = " ".join(list_paragraphs)
news_contents.append(final_article)
# df_features
df_features = pd.DataFrame(
{'Content': news_contents
})
# df_show_info
df_show_info = pd.DataFrame(
{'Article Title': list_titles,
'Article Link': list_links,
'Newspaper': 'El Pais English'})
return (df_features, df_show_info)
ProxyScrape çevrimiçi en popüler ve güvenilir proxy sağlayıcılarından biridir. Üç proxy hizmeti arasında özel veri merkezi proxy sunucuları, konut proxy sunucuları ve premium proxy sunucuları bulunur. Peki, python kullanarak haber makaleleri için web kazıma için en iyi HTTP proxy için mümkün olan en iyi çözüm nedir? Bu soruyu yanıtlamadan önce, her bir proxy sunucusunun özelliklerini görmek en iyisidir.
Özel bir veri merkezi proxy'si analiz amacıyla çeşitli sunuculardan büyük miktarda veri (boyut açısından) akışı gibi yüksek hızlı çevrimiçi görevler için en uygunudur. Bu, kuruluşların kısa sürede büyük miktarda veri iletmek için özel proxy'leri seçmelerinin ana nedenlerinden biridir.
Özel bir veri merkezi proxy'si, sınırsız bant genişliği ve eşzamanlı bağlantılar, kolay iletişim için özel HTTP proxy'leri ve daha fazla güvenlik için IP kimlik doğrulaması gibi çeşitli özelliklere sahiptir. 99,9 çalışma süresi ile, özel veri merkezinin herhangi bir oturum sırasında her zaman çalışacağından emin olabilirsiniz. Son olarak, ProxyScrape mükemmel müşteri hizmetleri sunar ve sorununuzu 24-48 iş saati içinde çözmenize yardımcı olur.
Sırada bir konut proxy'si. Konut, her genel tüketici için gidilecek bir proxy'dir. Bunun ana nedeni, bir konut proxy'sinin IP adresinin ISP tarafından sağlanan IP adresine benzemesidir. Bu, hedef sunucudan verilerine erişmek için izin almanın normalden daha kolay olacağı anlamına gelir.
ProxyScrape'un konut proxy'sinin diğer bir özelliği de dönen bir özelliktir. Dönen proxy, hesabınızın kalıcı olarak yasaklanmasını önlemenize yardımcı olur çünkü konut proxy'niz IP adresinizi dinamik olarak değiştirerek hedef sunucunun proxy kullanıp kullanmadığınızı kontrol etmesini zorlaştırır.
Bunun dışında, bir konut proxy'sinin diğer özellikleri şunlardır: eşzamanlı bağlantıyla birlikte sınırsız bant genişliği, özel HTTP / s proxy'leri, proxy havuzundaki 7 milyondan fazla proxy nedeniyle herhangi bir zaman oturumunda proxy'ler, daha fazla güvenlik için kullanıcı adı ve şifre kimlik doğrulaması ve son olarak, ülke sunucusunu değiştirme yeteneği. Ülke kodunu kullanıcı adı kimlik doğrulamasına ekleyerek istediğiniz sunucuyu seçebilirsiniz.
Sonuncusu ise premium proxy. Premium proxy'ler özel veri merkezi proxy'leri ile aynıdır. İşlevsellik aynı kalır. Temel fark erişilebilirliktir. Premium proxy'lerde, proxy listesi (proxy'leri içeren liste) ProxyScrapeağındaki her kullanıcı için kullanılabilir hale getirilir. Bu nedenle premium proxy'ler özel veri merkezi proxy'lerinden daha ucuzdur.
Peki, python kullanarak haber makaleleri için web kazıma için en iyi HTTP proxy için mümkün olan en iyi çözüm nedir? Cevap "konut vekili." Nedeni basittir. Yukarıda belirtildiği gibi, konut proxy'si dönen bir proxy'dir, yani IP adresiniz belirli bir süre boyunca dinamik olarak değiştirilir ve bu da IP bloğu almadan küçük bir zaman dilimi içinde çok sayıda istek göndererek sunucuyu kandırmaya yardımcı olabilir.
Daha sonra, en iyi şey proxy sunucusunu ülkeye göre değiştirmek olacaktır. IP kimlik doğrulamasının veya kullanıcı adı ve parola kimlik doğrulamasının sonuna ülke ISO_CODE'unu eklemeniz yeterlidir.
Önerilen Okumalar:
Bu makalede, web sayfası akış tasarımı ve yapısının temellerini anlayarak web kazımanın temellerini gördük. Ayrıca haber makalelerinden veri çekerek uygulamalı deneyim yaptık. Web kazıma, doğru şekilde yapılırsa harikalar yaratabilir. Örneğin, çıkarılan verilere dayanarak kategorileri tahmin edebilen ve kullanıcıya özetler gösterebilen tamamen optimize edilmiş bir model oluşturulabilir. Yapılması gereken en önemli şey, gereksinimlerinizi belirlemek ve sayfa yapısını anlamaktır. Python, seçtiğiniz verileri ayıklamak için çok güçlü ancak kullanımı kolay bazı kütüphanelere sahiptir. Bu, web kazımayı çok kolay ve eğlenceli hale getirdi.
Bu kodun söz konusu web sayfasından veri çekmek için kullanışlı olduğuna dikkat etmek önemlidir. Bunu başka bir sayfadan yapmak istiyorsak, kodumuzu o sayfanın yapısına göre optimize etmemiz gerekir. Ancak bunları nasıl tanımlayacağımızı öğrendikten sonra, süreç tamamen aynıdır.
Bu makale, python kullanarak haber makaleleri için web kazıma pratik yaklaşımını derinlemesine açıklamayı umuyor. Unutulmaması gereken bir şey, proxy'nin web kazıma için mutlak bir gereklilik olduğudur. Hedef sunucudan herhangi bir IP engellemesini önlemeye yardımcı olur. ProxyScrape python projelerini kullanarak haber makaleleri için web kazıma işleminiz için harika ve güvenilir bir yerleşim pro xy'si sağlar.