blog posts

Python ile web kazımayı öğretmek – sıfırdan yüze

“Web Scraping”, İnternetten geniş bilgi toplamak için kullanılan otomatik süreçlerden biridir. Web sayfalarında ve web sitelerinde yer alan bilgiler genellikle düzenli değildir ve belirli bir düzene sahip değildir. Bu tür verileri daha yapılandırılmış bir biçimde depolamak için web komut dosyalarını yararlı bir araç olarak kullanabiliriz. Çevrimiçi hizmetler, uygulama programlama arayüzleri veya API’ler ve özel yazılı kodlar, web kazıma web siteleri için kullanabileceğimiz yöntemler arasındadır. Öte yandan Python, günümüzün en popüler programlama dillerinden biri olarak, kolay kodlama, çok sayıda ve verimli kütüphaneler sağlama,Python ile web kazımayı öğretmek aktif bir topluluk vb. nedeniyle web kazıma için iyi bir seçimdir. Faradars dergisinin bu makalesinde Python ile web scraping’i basit bir dille ve olabildiğince eksiksiz bir şekilde öğrenmeyi ve ayrıca bu konuda çeşitli ipuçlarını ve araçları gözden geçirmeyi amaçlıyoruz

Muhtemelen bir web sitesinden bilgileri kopyalayıp başka bir yere yapıştırmışsınızdır. Bu noktada, aslında web sayfasının o bölümünde web kazımaya benzer bir işlemi (ancak manuel olarak) gerçekleştirdiniz. Verileri manuel olarak getirmenin sıkıcı sürecinin aksine, web kazıma, sonsuz web verisi genişliğinden çıkarılan binlerce, milyonlarca ve hatta milyarlarca veri noktasını (veya değeri) almak için makine öğrenimini ve akıllı otomasyonu kullanır.

 Web kazıma nedir?

“Web Scraping” istenilen web sitesinden verileri robot yardımıyla çıkarıp uygun ve anlaşılır bir formatta sunduğumuz işlemdir. Bir web kazıyıcı, bir web sayfasından HTML kodunu çıkarır ve ardından onu yararlı bilgiler için ayrıştırır.

Basit bir ifadeyle ve kısaca web scraping işlemini ” bir web sitesinden veri çıkarmak” olarak tanımlayabiliriz .

Python’un web kazımadaki rolü nedir?

En popüler ve yaygın olarak kullanılan programlama dillerinden biri olan Python , web kazıma için en iyi seçeneklerden biridir. Çünkü HTTP isteklerini işlemek için birden fazla kitaplık , HTML ayrıştırma ve web sayfalarının oluşturulmuş ve görüntülenen sürümlerini derlemek için tarayıcı merkezli çerçeveler sağlar .

İçgörü oluşturmak için web kazıma işlemi önemli ölçüde faydalı olabilir . Web verilerini almanın 2 yolu vardır. Bunu bir web kazıma aracı kullanarak kendimiz yapmak veya web kazıma hizmetleri sağlayan şirketlere dış kaynak sağlamak.

Python neden web kazıma için iyi bir seçimdir?

Aşağıda Python programlama dilinin Python’un web kazıma amacıyla çok iyi bir seçim olabileceğini gösteren özelliklerini listeledik.

Kullanım kolaylığı: Python kodlaması çok karmaşık değildir. Bazı dillerde olduğu gibi parantez ve noktalı virgül gibi semboller kullanmaya gerek kalmayacak ve bunun sonucunda kullanımı kolaylaştıran daha temiz bir koda sahip olacağız.

Geniş bir kütüphane seti: Python bize çeşitli alanlarda geniş bir kütüphane seti sağlar . Numpy, Matlplotlib , Pandas , programcılara çeşitli hizmetler ve yöntemler sağlayan , yaygın olarak kullanılan Python kitaplıklarına örnektir. Bu nedenle Python dili, web kazıma ve elde edilen veriler üzerinde daha fazla işlem yapmak için iyi bir seçimdir.

Dinamik olarak yazılmış: Python’da kod yazarken ve değişkenleri tanımlarken, onlar için veri türünü belirtmemize gerek yoktur ve değişkenlere ihtiyaç duyduğumuzda bunları doğrudan kullanabiliriz. Bu, zamandan tasarruf sağlar ve işin daha hızlı ilerlemesini sağlar.

Anlaşılır sözdizimi:  Bu dilde Python sözdizimi ve kodlaması basittir çünkü Python komutlarını yazma ve okuma biçimi İngilizce ifadeleri çalışmaya çok benzer. Python kodları açık ve akıcıdır ve okunması kolaydır. Kodlarındaki girinti aynı zamanda kullanıcının farklı kod aralıklarını ve bloklarını tanımasına da yardımcı olur.

Daha az kodla daha fazla görev yapmak: Web scraping’in amacının zamandan tasarruf etmek olduğu göz önüne alındığında, kodlamaya daha fazla zaman harcamak istiyorsak bu o kadar da faydalı olmayacaktır. Python’da daha küçük kodlar yazarak daha fazlasını yapabiliriz. Sonuç olarak kodlama yaparken zamandan tasarruf edeceğiz .

Geliştirici topluluğu veya geliştirici topluluğu: Kodlama yaparken bir sorunla karşılaşacağımızı ve bir soruna takılıp kalacağımızı beklemek çok da uzak değil. Bu konuda geniş ve aktif bir Python topluluğunun varlığı sayesinde endişelenmemize gerek yok ve ondan yardım alabiliyoruz.

Python ile web kazıma için hangi araçlar ve kütüphaneler var?

Python programlama dili web kazıma için yararlı araçlara sahiptir. Web komut dosyası oluşturma için Python’da bulunan en kullanışlı kitaplıklardan ve çerçevelerden bazılarını listeledik.

  • İstekler
  • GüzelÇorba
  • yıpratıcı
  • Selenyum
  • urllib3
  • Lxml

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

Web kazımada, bir web sayfasının içeriği HTTP istekleri kullanılarak çıkarılır, ardından HTML, JSON vb. gibi kaynak değerli bilgileri çıkarmak için ayrıştırılır.

  • bir web sayfasının içeriğini isteme ( istekler  )
  • HTML’yi indir
  • HTML ayrıştırma ( GüzelÇorba  )
  • Ayrıştırılmış içerikten öğeleri çıkarın

Python ile web kazıma kitaplıklarını yükleme

Pip paket yöneticisini kullanarak Python ile web kazıma kütüphanelerini kuruyoruz. Aşağıdaki komutu çalıştırarak yükleyin istekler  , güzelçorba  , urllib  Ve kavgacı  yaparız

$ pip3 yükleme istekleri urllib3 güzelsoup4 scrapy lxml pyOpenSSL

Python ile web kazıma örneği

Python’da web scraping için yapabileceğimiz en kolay yol, istenen web sayfasını Python istekleri ile getirmek ve sayfanın HTML kodlarını BeautifulSoup ile ayrıştırmaktır. Aşağıdaki örnek, daha karmaşık örneklere geçmeden önce bu iki şeyin nasıl yapılacağını göstermektedir.

İsteklerle bir web sayfasının HTML’sini çıkarın

Python’da web kazımanın ilk adımı, istenen sayfanın HTML’sini çıkarmaktır. Bu, HTTP istekleri veya tarayıcı tabanlı uygulamalarla yapılabilir. Bu örnekte, bir HTTP isteği yapmak ve HTTP yanıtında web sayfasının HTML’sini almak için Python isteklerini kullanıyoruz.

# Making an HTTP Request
import requests
 
# Define URL to fetch
url = 'https://crawler-test.com/'
 
# Make the Request
r = requests.get(url)
 
# Print the outpout
print('Status code: ', r.status_code)
print('Type: \n', type(r.text))
print('Text: \n', r.text[:200])

Söz konusu kodların çıktısı aşağıdaki gibi olacaktır.

Status code:  200
Type: 
 <class 'str'>
Text: 
 <!DOCTYPE html>
<html>
  <head>
    <title>Crawler Test Site</title>
     
      <meta content="en" HTTP-EQUIV="content-language"/>
          
    <link type="text/css" href="/css/app.css" rel="styleshe

BeautifulSoup ile HTML ayrıştırma

Python’da web kazımanın ikinci adımı belgeden bilgi çıkarmaktır. Bu işleme “ayrıştırma” denir. Bu örnekte, önceki adımda HTTP yanıtında döndürülen sayfanın HTML kodunu ayrıştırmak için Python kitaplığı BeautifulSoup’u kullanıyoruz.

# Parsing an HTML
from bs4 import BeautifulSoup
 
# Parse the HTML
soup = BeautifulSoup(r.text, 'html.parser')
 
# Show type of the soup object
print('Type: \n', type(soup))
 
# Show HTML title
soup.find('title')

Bu kodların çıktısı aşağıdaki gibi olacaktır.

Type: 
 <class 'bs4.BeautifulSoup'>
<title>Crawler Test Site</title>

Artık bir web sayfasını kazımanın temellerine aşina olduğumuza göre, web kazıma gerçekleştirmek için kullanılabilecek bazı yöntemleri inceleyeceğiz.

CSS, HTML, JavaScript ve XPath’ı anlamak

Python ile web kazımaya başlamadan önce CSS, HTML, JavaScript ve Xpath’ın bazı temel kavramlarına aşina olmak gerekir. Bu bilgiyle, web sitesinden veri çıkarmayı otomatikleştirmek için kaynak kodunu ve DOM’u kullanabiliriz.

Web kazıma için HTML

“Köprü Metni Biçimlendirme Dili” veya HTML, web sayfaları oluşturmak için temel dillerden biridir. Tarayıcıyı bir web sayfasını açmak için kullandığımızda, en büyük amacı CSS , HTML ve JavaScript dosyalarını yorumlayıp bunları işlevsel bir web sitesine dönüştürmektir. Daha sonra, bir tarayıcının HTML kodlarını nasıl görüntülediğini göstereceğiz.

Sayfanın başlığını tanımlayan <title> etiketi tarayıcı sekmesinde görünür ve <h1> etiketi de metni birinci sınıf başlık olarak gösterir.

Bir HTML belgesi, bir Web sayfasının ağaç yapısını sağlayan <> işaretleri içine alınmış etiketler içerir. HTML etiketleri, bir web sayfasından bilgi çıkarmak için kullanabileceğimiz yapılandırılmış bir formata sahiptir.

 Python ile web kazımada HTML etiketleri nasıl kullanılır?

Web sayfasından elde edilen verileri Python’da HTML etiketleriyle kullanmak için yöntemden .find(‘etiket_adı’)  BeautifulSoup kütüphanesini kullanıyoruz.

# Show HTML title
soup.find('title')

Web kazıma için CSS

Basamaklı Stil Sayfaları veya CSS, web geliştirmede öğelerin bir sayfada nasıl görüntülenmesi gerektiğini açıklamak için kullanılır. Örneğin, CSS’de, sayfadaki tüm bağlantılara belirli bir renk uygulamak için aşağıdaki komutu kullanabiliriz; bu sınıf adı verilen bir sınıfa sahiptir. sınıfım  vardır.

a.myclass {
    color: blue;
}

CSS seçicileri, bir HTML belgesindeki öğeleri bulmak ve çıkarmak için web kazımada kullanılabilecek başka bir yapılandırılmış formattır.

Web komut dosyası oluşturmada, bu seçicinin herhangi bir öğesini bulmak için sayfanın stilini değiştirmek için kullanılan CSS seçicileri kullanmamız da mümkündür.

 Python ile web kazımada CSS seçicileri nasıl kullanılır?

Python’da, CSS seçicisini kullanarak bir HTML belgesinden veri çıkarmak için from yöntemi seçme()  BeautifulSoup kütüphanesini kullanıyoruz.

soup.select('a.myclass')

Yöntemi de kullanabiliriz .css()  Nesnedeki scrapy seçiciyi kullanın.

from scrapy import Selector
 
sel = Selector(text=html)
  
sel.css('p.hello').extract()

Web kazıma için XPath

XPath, bir HTML veya XML belgesinin çeşitli öğelerine ve özelliklerine erişmek için kullanılabilen bir sorgu dilidir. XPath ifadeleri, bir HTML veya XML belgesi içindeki bir öğenin (düğümün) veya birden çok öğenin konumunu tanımlamak için kullanılan dizelerdir.

XPath, bir HTML belgesindeki öğeleri tam olarak bulmamızı sağlar. Aynı zamanda çoğu web kazıma aracı tarafından da desteklenir, bu da onu paha biçilmez bir web kazıma aracı haline getirir. Örneğin aşağıda verilen xpath, HTML belgesinin gövde öğesinin içindeki h1’i bulur.

//html/body/h1

 Python ile web kazımada XPath nasıl kullanılır?

Python kitaplığından Python’da web sayfası HTML’sini XPath ile ayrıştırmak için lxml  kullanıldı

from lxml import html
 
# Parse HTML with XPath
content = html.fromstring(r.content)
panels = content.xpath('//*[@class="panel-header"]')

Ayrıca yöntem de yapabiliriz .xpath()  Seçici nesnede scrapy kullanın.

from scrapy import Selector
 
sel = Selector(text=html)
  
sel.xpath('//p').extract()

Python’da web kazıma yöntemleri

Python’da web kazıma için çeşitli yöntemler vardır. HTTP istekleri yapmak için bir programlama dili kullanabiliriz. Eklentili bir web tarayıcısı kullanın. Tarayıcı uygulamasını kullanın. Bir web örümceği veya web tarayıcısıyla çalışın.

  • Basit HTTP istekleri – kitaplık gibi istekler  .
  • Bir web tarayıcısı kullanma – örneğin Selenyum .
  • Scrapy gibi bir web tarayıcısı kullanın.

Python’da HTTP istekleriyle web kazıma

Kütüphaneyi kullanarak sunucuyla iletişim kurmak için Python’da HTTP istekleri yapabiliriz. istekler  Python’da kullanın. Tek yapmamız gereken verilen URL’ye bir HTTP isteği göndermek. Web sunucusu daha sonra sayfanın içeriğini içeren bir yanıt döndürür.

HTTP istekleri, JavaScript yürütüldükten sonra web sayfasının oluşturulmuş veya çalıştırılabilir sürümünü görmemize izin vermez. Bazı içerikler JavaScript’in arkasına gizlendiğinde (yani, JavaScript yürütüldükten sonra görüntülendiğinde), web sitesinden bilgi toplamak için bir tarayıcı uygulaması kullanmak daha iyi olabilir.

Python’da bir tarayıcıyla web kazıma

Tarayıcımıza yüklenen bir uygulamayı yükleyerek istediğimiz web sitesine ait bilgi ve içerikleri toplayabiliriz. Tıpkı Chrome gibi bir tarayıcı açtığımızda olduğu gibi. Bu şekilde Python kullanarak web sitesiyle etkileşime geçebiliriz. Bu, sayfaya JavaScript yüklememiz gerektiğinde, giriş bilgilerini eklerken veya web sitemize testleri otomatikleştirirken çok yararlı olacaktır.

Otomasyon ve tarayıcı tabanlı web kazıma için kullanılabilecek çeşitli uygulamalar vardır. Bunlardan bazılarını aşağıda listeledik.

  • Selenyum
  • Oyun yazarı
  • Kuklacı

Python’da web tarayıcısıyla web kazıma

Screaming Frog gibi “Web tarayıcıları” aslında web kazıma araçları arasındadır. Kendimiz ürettiğimiz web kazıyıcılardan çok daha güçlüler. Python’u kullanarak kendi web tarayıcımızı oluşturabiliriz ancak bunun hızla karmaşık hale gelebileceğini unutmayın.

Scrapy gibi bir çözümü kullanmak Python’da bir web tarayıcısı oluşturmamızı kolaylaştırabilir.

Python’da web kazıma kütüphaneleri

Python programlama dili, web kazımada kullanılabilecek geniş bir kütüphane setine sahiptir. Aşağıda bu kütüphanelerden bazılarının başlıklarını listeledik.

  • İstekler
  • GüzelÇorba
  • lxml
  • Selenyum
  • yıpratıcı
  • İstekler-HTML

Çoğu web kazıma projesinde bu kütüphanelerden yalnızca birkaçına ihtiyacımız var. Aşağıda, en basitinden en karmaşık uygulamalara kadar web kazıma kitaplıklarının nasıl kurulacağına ilişkin örnekler verilmiştir.

  1. Kütüphanenin kullanımı istekler  Ayrıştırma kitaplığına sahip Python GüzelÇorba  Veya lxml .
  2. Dağıtım İstekler-HTML  ”Yerleşik” ayrıştırma yöntemleriyle.
  3. kullanarak Selenyum  dahili ayrıştırma yöntemleriyle birlikte.
  4. İtibaren yıpratıcı  Dahili ayrıştırma yöntemleriyle kullanın.

Python’da istek kitaplığıyla web kazıma

Python’da web kazıma işlemini gerçekleştirmek için aşağıdaki gibi HTTP istekleriyle ilgili kütüphanelerden biri istekler  bir ayrıştırıcı kitaplığıyla birlikte – örneğin GüzelÇorba  veya tarayıcı tabanlı bir kütüphane gibi Selenyum  Kullanırız

Genel olarak ihtiyacımız olan tek şey Python’u ve kütüphaneyi kurmaktır. istekler Dır-dir. Bu amaçla komut satırına aşağıdaki komutu yazıp çalıştırıyoruz.

$ pip yükleme istekleri

Bir web sayfasını getirip almak için aşağıdaki kodları çalıştırıyoruz. Bu kodların çıktısı, web sayfasına ilişkin Unicode ve metin formatındaki HTML kodlarını içerir.

BeautifulSoup kütüphanesi ile Python’da web kazıma

Python’daki BeautifulSoup kütüphanesini kullanarak bir web sayfasının HTML kodlarını ayrıştırmak için ilgili kütüphaneyi kurarız, bir HTTP istek kütüphanesini kullanarak HTML kodlarını alırız ve sınıfı kullanarak HTML’yi ayrıştırırız. GüzelÇorba() Analiz ediyoruz. Bu adımları aşağıda verdik.

Öncelikle BeautifulSoup kütüphanesini kuruyoruz.

$ pip3 güzelsoup4'ü yükle

Daha sonra, bs4  sayfayı içe aktarın ve ayrıştırın ve sayfadan çeşitli HTML etiketleri almak için BeautifulSoup yöntemlerini kullanın.

# Fetch the HTML
import requests
url = 'https://crawler-test.com/'
response = requests.get(url)
 
# Import BeautifulSoup
from bs4 import BeautifulSoup
 
# Parse the HTML
soup = BeautifulSoup(response.text, 'html.parser')
 
# Extract any HTML tag
soup.find('title')

Lxml kitaplığıyla Python’da web kazıma

Kütüphane lxml  Python’da HTML veya XML’den bilgi çıkarmak için kullanılabilen bir ayrıştırma kitaplığıdır. Kütüphane lxml kütüphaneye alternatif olarak GüzelÇorba  Kullanmak.

Kütüphaneyi kullanmak için lxml Python’da, “İstekler” (İstekler) ile ilgili kütüphaneyle istenen sayfayı ve HTML’sini şu yöntemle getirin: html.fromstring()  Analiz ediyoruz

Pip kütüphanesini kullanma lxml Biz kuruyoruz

$ pip kurulum lxml

HTML metnini yöntemle görüntüleyin fromstring()  Analiz ediyoruz

import requests
from lxml import html
 
r = requests.get() 
tree = html.fromstring(r.text)

BeautifulSoup’a kıyasla lxml kullanmanın avantajı, veri ayıklamak için XPath ifadelerini kullanmanıza izin vermesidir.

# Parse with XPath in lxml
html.xpath('//*[@class="panel-header"]')

Python’da request-html kitaplığıyla web kazıma

Kütüphane istekler-HTML Python’daki HTML ayrıştırma kitaplıklarından (HTML ayrıştırıcı) biri, bir web sayfasından istenen bilgiyi çıkarmak için CSS seçicileri ve XPath ifadelerini kullanmamıza olanak sağlamasıdır. Bu kütüphane aynı zamanda bize JavaScript betiklerini çalıştırma olanağı da sağlar.

Kütüphaneyi kullanarak Python’daki bir web sayfasından veri toplamak için istekler-HTML , önce ilgili kütüphaneleri kurun ve ardından sınıfı kullanın HTMLSession()  , “Session” nesnesini oluşturuyoruz. Artık GET isteğini aşağıdaki komutu kullanarak yapabiliriz. .elde etmek()  hadi yapalım.

Kütüphaneleri kurmak için aşağıdaki komutu yazıp çalıştırıyoruz.

pip yükleme istekleri istekleri-HTML urlparse4

Python kullanarak bir web sitesinden bilgi toplamak HTMLSession()  yapılabilir

# Scrape website with Requests-HTML
from requests_html import HTMLSession
 
session = HTMLSession()
r = session.get('https://crawler-test.com/')
r.html.find('title')[0].text

Jupiter Notebook kullanıyorsanız aşağıdaki hatanın oluşması muhtemeldir. Bu gibi durumlarda AsyncHTMLSession’ı kullanırız.

RuntimeError: HTMLSession mevcut bir olay döngüsü içinde kullanılamaz.

Selenium kütüphanesi ile Python’da web kazıma

Python’da web kazıma amacıyla web tarayıcı uygulamasını kullanmak için web sürücüsünü ve ilgili kütüphaneyi yüklüyoruz. Ardından web sürücüsü modülünün prototipini yapın ve yöntemi kullanın elde etmek()  Bilgi almayı düşündüğümüz web sayfasının web tarayıcısını açıyoruz.

Selenium, bir tarayıcı açıp istenen web sayfasını yükleyerek çalışır. Tıpkı internette gezinirken yaptığımız gibi. Sonuç olarak sayfayı çalıştırır, böylece ondan istediğimizi alabiliriz. Selenium, tarayıcıdaki çeşitli etkinlikleri otomatikleştirme konusunda harika bir iş çıkarıyor.

Selenium’u Python’da web scraping yapmak amacıyla kullanmak için aşağıdaki komutla kurulum yapmak gerekir.

$ pip3 web sürücüsü yöneticisi Selenyum'u yükleyin

Artık örneğin aşağıdaki kodları çalıştırarak bu sayfanın 1. düzey başlık etiketini (veya h1) görüntüleyebiliriz.

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
 
# Install Webdriver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
 
# Fetch page
driver.get('https://crawler-test.com/')
 
try:
    # Get the span element
    elem = driver.find_element(By.TAG_NAME, 'h1')
    # Show scraped content
    print(elem.text)
except Exception as e:
    print('There was an error', e)
 
 # Quit browser when done
driver.quit()

Python’da scrapy kütüphanesi ile web kazıma

Kütüphane aracılığıyla web sayfalarından istenilen bilgiye ulaşabilmek kavgacı  Python’da çıkartın. Özel web tarayıcımızı Python’da oluşturuyoruz.

Bu amaçla ilgili kütüphaneleri kurmamız gerekecek ve scrapy veya object kabuğundan Seçici()  hadi kullanalım

Öncelikle aşağıdaki komutu kullanarak gerekli kütüphaneleri kuruyoruz.

$ pip3 scrapy pyOpenSSL lxml'i yükleyin

Bir terminal açıp aşağıdaki komutu çalıştırarak scrapy ile neler yapılabileceğine dair hızlı bir genel bakışa sahip olabiliriz.

$ hurda kabuk

Aşağıdaki komutları deneyebiliriz.

fetch('https://crawler-test.com/')
view(response)
response.status
print(response.text)
response.xpath('//title/text()').get()

Web sayfasından bilgi çıkarmak için Scrapy seçici nesnesini isteklerle de kullanabiliriz.

from scrapy import Selector
import requests
 
url = 'https://crawler-test.com/'
response = requests.get(url)
html = response.content
 
sel = Selector(text = html)
 
sel.xpath('//a/@href').extract() 

Python ile web kazımada proxy kullanmanın gerekliliği

Python ile web kazıma çok hızlıdır ve ana sunuculara çok fazla yük getirir. Bu nedenle firmalar maliyetleri düşürmek ve kullanıcı deneyimlerini yavaşlatmamak için web scraping ve bot ihtimalini mümkün olduğu kadar engellemeye çalışıyorlar.

Bazı durumlarda, insanları robotlardan ayırmak için captcha işlevi eklerler. Diğer durumlarda Kullanıcı Aracılarını ve hatta bir IP adresini tamamen engellerler. Bu nedenle daha büyük ölçekte web scraping yapmak istiyorsak dönen IP’ler ve proxy’ler kullanmak çok önemlidir.

Python’da proxy kullanabilmek için aşağıdaki yöntemlere göre proxy’mizi hazırlayabiliriz.

  • Birçoğu şu anda engellenmiş olan Proxyscrape gibi web sitelerinden ücretsiz proxy’ler bulun.
  • İhtiyacımız olan IP’leri bir ücret karşılığında sağlayan ücretli hizmetleri kullanın.

Proxy’ler hazırlandıktan sonra isteğin Proxies parametresine bir sözlük geçirerek Python istekleri ile bunları talep edebiliriz. elde etmek()  Kullanmak.

import requests 
 
url = 'https://crawler-test.com/'
 
proxies = {
    'http': '128.199.237.57:8080'
}
 
r = requests.get(url, proxies=proxies)

Web kazımanın kullanım alanları nelerdir?

Fiyatları karşılaştırmak, e-posta adreslerini toplamak, sosyal medyadan veri almak, araştırma ve geliştirme, işe alım reklamları vb. şeyler web scraping’in kullanım alanları arasında sayılabilir. Aşağıda her biri hakkında bir açıklama yaptık.

Fiyat karşılaştırması: Çevrimiçi mağazalardan veri almak için web kazıma yapan ve bu bilgileri ürünlerin fiyatlarını karşılaştırmak için kullanan hizmetler vardır.

E-posta adreslerini toplayın: E-postayı pazarlama aracı olarak kullanan birçok şirket var. Bu şirketler web kazımayı kullanarak e-posta kimliklerini toplar ve bunları toplu e-posta göndermek için kullanır.

Sosyal medyadan veri alın: Sosyal medya sitelerinde bir web komut dosyası çalıştırarak ve onlardan veri alarak, neyin trend, popüler ve trend olduğunu anlayabiliriz.

Araştırma ve geliştirme: Web kazıma, web sitelerinden büyük istatistiksel, genel, sıcaklık vb. veri kümelerini toplamak için kullanılabilir. Ayrıca elde edilen verileri analiz ederek değerlendirme yapmak veya Ar-Ge veya araştırma geliştirme amacıyla kullandı.

İş ilanları: İş pozisyonları ve mülakatlara ilişkin detaylar çeşitli sitelerden toplanarak tek bir yerde listelenerek kullanıcıların kolayca ulaşabilmesi sağlanır.

Web veri çıkarma yöntem ve uygulamaları bu durumlarla sınırlı olmayıp aşağıdaki gibi durumlarda da kullanılabilmektedir.

  • Haber ve gazetecilik
  • SEO izleme
  • Risk yönetimi ve rakip analizi
  • Veriye dayalı pazarlama
  • Akademik araştırma
  • Gayrimenkul ve daha birçok şeyin alım satımı

Python’da web taraması ile web kazıma arasındaki fark nedir?

Yaygın olarak örümcek olarak adlandırılan bir web tarayıcısı, bağlantıları takip ederek ve keşfederek içeriği indekslemek ve aramak için İnternet’i tarayan bir yapay zeka aracıdır. Birçok projede, URL’yi bulmak için öncelikle belirli bir web sitesini veya web sitesini tararız. Bundan sonra bu URL’leri web kazıyıcımıza aktarıyoruz.

Önerilen içerik:

Scrapy çerçevesiyle sıfırdan yüze kadar bir web tarayıcısı oluşturma

Öte yandan, web sayfalarından verileri doğru ve hızlı bir şekilde almak için tasarlanmış özel bir araç olan “Kazıyıcı”mız var. Web veri kazıma araçları, söz konusu projeye bağlı olarak tasarım ve karmaşıklık açısından büyük farklılıklar gösterebilir. Herhangi bir web kazıyıcının en önemli kısmı, HTML dosyasından çıkarmayı planladığımız verileri bulmak için kullanılan seçicilerdir. Tipik olarak XPath, Regex, CSS seçicileri veya bunların bir kombinasyonu kullanılır. Bir web tarayıcısı ile bir web kazıyıcı arasındaki farkı bilmek, web veri toplama projelerinde ilerlememize yardımcı olacaktır.

Sıkça Sorulan Sorular

Artık web scraping kavramına ve Python’da bu işlem için mevcut olan araçlara aşina olduğumuza ve kodlamasını birlikte incelediğimize göre, bu bölümde web scraping ile ilgili sık sorulan bazı soruları incelemenin zamanı geldi.

Hangi özellikler Python’u web kazıma için iyi bir seçim haline getirir?

İlgili kütüphanelerin geniş bir setinin sağlanması, kullanım kolaylığı, nispeten kolay kodlama, daha az kod hacmiyle daha fazlasını yapabilme, aktif topluluk ve dinamik tür, Python’da web scraping’i bu işlemi yapmak için iyi bir seçim haline getiren özellikler arasında sayılabilir.

Python’da web kazıma yasal mı?

Web kazımanın yasal olup olmadığına gelince, bazı web siteleri insanların bunu yapmasına izin verirken, diğerleri web sitelerinden veri toplamamıza izin vermez. Bunu anlamak için istenilen web sitesinin robots.txt dosyasına bakmamız gerekiyor. Bu dosyaya erişmek için adresinin sonuna /robots.txt ekleyin.

Web kazıma için Python kütüphaneleri nelerdir?

Bu amaç için çeşitli kütüphaneler mevcut ancak İstekler, Scrapy ve BeautifulSoup4 en popülerleri arasında.

Çözüm

Web kazıma, her saniye çok fazla verinin üretildiği günümüz dünyasında edinilmesi gereken çok değerli bir beceridir. Veriler her yerdedir ve bunları çevrimiçi kaynaklardan kolayca çıkarabilmek önemlidir.

Web kazımanın, bir yazılım robotu kullanarak istenen web sitesindeki verileri çıkardığımız ve uygun formatta düzenlediğimiz bir prosedür olduğunu söylemiştik. Web kazıma bilgisi kullanılmadan, büyük miktarlarda veri toplamak, çıkarım yapmak, görselleştirmek ve tahminlerde bulunmak çok zor olurdu.

Genellikle bu süreç, değerli öngörüler oluşturmak ve daha akıllı kararlar almak için kamuya açık web verilerini ve bilgilerini kullanmak isteyen bireyler ve işletmeler tarafından kullanılır.

Ayrıca web kazıma araçları olarak İstekler ve BeautifulSoup gibi kütüphanelerle de tanıştık. Bu veri toplama araçlarını kullanmadan, web sitesi sayfalarından verileri manuel olarak kopyalayıp yapıştırmak sıkıcı bir iş olacaktır. Web kazımanın avantajlarını kullanarak mümkün olan en kısa sürede yapılabilecek bir iş.