Bu Güzel Çorba Python Eğitimi ile Bir Web Sitesini Kazıyın

Bu Güzel Çorba Python Eğitimi ile Bir Web Sitesini Kazıyın

Güzel Çorba, açık kaynaklı bir Python kütüphanesidir. XML ve HTML dosyalarının içeriğini sıyırmak için gezinme ayrıştırıcılarını kullanır. Birkaç analitik amaç için verilere ihtiyacınız var. Ancak, Python ve web kazıma konusunda yeniyseniz, Python'un Güzel Çorba kitaplığı bir web kazıma projesi için denemeye değer.





Python'un açık kaynaklı Güzel Çorba kitaplığıyla, bir web sayfasının herhangi bir bölümünü veya öğesini, süreç üzerinde maksimum kontrolle kazıyarak veri alabilirsiniz. Bu yazıda, bir web sitesini kazımak için Güzel Çorba'yı nasıl kullanabileceğinize bakıyoruz.





Güzel Çorba Nasıl Kurulur ve Nasıl Başlanır?

Devam etmeden önce, bu Güzel Çorba öğretici makalesinde Python 3'ü kullanacağız ve güzel çorba4 , Güzel Çorba'nın en son sürümü. emin olun bir Python sanal ortamı oluşturun projenizi ve paketlerini yerel makinenizdekilerden izole etmek için.





bir resmin şeffaf bir arka plana sahip olması nasıl yapılır

Başlamak için sanal ortamınıza Güzel Çorba kitaplığını yüklemelisiniz. Güzel Çorba, tüm işletim sistemleri için bir PyPi paketi olarak mevcuttur; pip kurulumu güzelsoup4 terminal üzerinden komut verin.

Ancak, Debian veya Linux kullanıyorsanız, yukarıdaki komut yine de çalışır, ancak çalıştırarak paket yöneticisi ile yükleyebilirsiniz. apt-get install python3-bs4 .



Güzel Çorba, URL'leri doğrudan kazımaz. Yalnızca hazır HTML veya XML dosyalarıyla çalışır. Bu, bir URL'yi doğrudan ona iletemeyeceğiniz anlamına gelir. Bu sorunu çözmek için, Güzel Çorba'ya beslemeden önce Python'un istek kitaplığı ile hedef web sitesinin URL'sini almanız gerekir.

Bu kitaplığı kazıyıcınız için kullanılabilir hale getirmek için pip yükleme istekleri terminal üzerinden komut verin.





XML ayrıştırıcı kitaplığını kullanmak için şunu çalıştırın: pip kurulum lxml yüklemek için.

Kazımak İstediğiniz Web Sayfasını İnceleyin

Aşina olmadığınız herhangi bir web sitesini kazımadan önce, en iyi uygulama, öğelerini incelemektir. Bunu, tarayıcınızı geliştirici moduna geçirerek yapabilirsiniz. oldukça kolay Chrome DevTools'u kullanın Google Chrome kullanıyorsanız.





Ancak, HTML etiketleri, nitelikleri, sınıfları ve kimlikleri hakkında daha fazla bilgi edinmek için bir web sayfasını incelemek gerekir. Bunu yapmak, bir web sayfasının temel öğelerini ve içerik türlerini ortaya çıkarır.

Ayrıca, bir web sitesinden tam olarak istediğiniz verileri ve bunları nasıl elde edebileceğinizi elde etmek için kullanabileceğiniz en iyi stratejileri geliştirmenize yardımcı olur.

Güzel Çorba ile Web Sitelerinin Verilerini Nasıl Kazıyabilirsiniz?

Artık her şey hazır ve hazır olduğuna göre, tercih edilen bir kod düzenleyiciyi açın ve ona seçilen bir ad vererek yeni bir Python dosyası oluşturun. Ancak, ayrıca Jupyter Notebook gibi web tabanlı IDE'leri kullanın Python'u komut satırı üzerinden çalıştırmaya aşina değilseniz.

Ardından, gerekli kitaplıkları içe aktarın:

from bs4 import BeautifulSoup
import requests

Öncelikle, istek kitaplığının nasıl çalıştığını görelim:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
print(website)

Yukarıdaki kodu çalıştırdığınızda, isteğinizin başarılı olduğunu belirten 200 durumu döndürür. Aksi takdirde, başarısız bir GET isteğini gösteren bir 400 durumu veya diğer bazı hata durumları alırsınız.

Parantez içindeki web sitesinin URL'sini her zaman hedef URL'nizle değiştirmeyi unutmayın.

Web sitesini bir kez aldığınızda elde etmek istekte bulunursanız, bunu, seçtiğiniz formata bağlı olarak yerleşik XML veya HTML ayrıştırıcısını kullanarak artık içeriği HTML veya XML dosyaları olarak okuyabilen Güzel Çorba'ya iletirsiniz.

Bunu HTML ayrıştırıcısıyla nasıl yapacağınızı görmek için sonraki kod parçacığına bir göz atın:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup)

Yukarıdaki kod, içeriğiyle birlikte bir web sayfasının tüm DOM'sini döndürür.

Ayrıca, DOM'nin daha uyumlu bir sürümünü aşağıdakileri kullanarak da elde edebilirsiniz: güzelleştirmek yöntem. Çıktısını görmek için bunu deneyebilirsiniz:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.prettify())

Ayrıca, bir web sayfasının saf içeriğini, öğesini aşağıdakilerle yüklemeden de elde edebilirsiniz. .Metin yöntem:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.text)

Bir Web Sayfasının İçeriğini Etiket Adına Göre Nasıl Kazıyabilirsiniz?

Ayrıca Güzel Çorba ile belirli bir etiketteki içeriği kazıyabilirsiniz. Bunu yapmak için Güzel Çorba kazıyıcı isteğinize hedef etiketin adını eklemeniz gerekir.

Örneğin, içeriği nasıl alabileceğinizi görelim. h2 bir web sayfasının etiketleri.

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.h2)

Yukarıdaki kod parçasında, çorba.h2 ilkini döndürür h2 web sayfasının öğesi ve gerisini yok sayar. Tüm yüklemek için h2 öğelerini kullanabilirsiniz. hepsini bul yerleşik işlev ve için Python döngüsü:

flash sürücüden windows nasıl kurulur
from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups)

Bu kod bloğu hepsini döndürür h2 elementler ve içerikleri. Ancak, etiketi kullanarak içeriği, etiketi yüklemeden alabilirsiniz. .sicim yöntem:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups.string)

Bu yöntemi herhangi bir HTML etiketi için kullanabilirsiniz. Yapmanız gereken tek şey değiştirmek h2 beğendiğinizi etiketleyin.

Bununla birlikte, bir etiket listesi ileterek daha fazla etiketi kazıyabilirsiniz. hepsini bul yöntem. Örneğin, aşağıdaki kod bloğu içeriğini sıyırır. ile , h2 , ve Başlık etiketler:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
tags = soup.find_all(['a', 'h2', 'title'])
for soups in tags:
print(soups.string)

Kimliği ve Sınıf Adını Kullanarak Bir Web Sayfası Nasıl Kazılır?

DevTools ile bir web sitesini inceledikten sonra, her bir öğeyi DOM'sinde tutan id ve sınıf nitelikleri hakkında daha fazla bilgi edinmenizi sağlar. Bu bilgiye sahip olduğunuzda, bu yöntemi kullanarak o web sayfasını kazıyabilirsiniz. Bir hedef bileşenin içeriği veri tabanından döngüye girdiğinde kullanışlıdır.

kullanabilirsiniz bulmak kimlik ve sınıf sıyırıcılar için yöntem. aksine hepsini bul yinelenebilir bir nesne döndüren yöntem, bulmak yöntem, yinelenemeyen tek bir hedef üzerinde çalışır; İD bu durumda. Yani, kullanmanıza gerek yok için onunla döngü.

Kimliği kullanarak aşağıdaki bir sayfanın içeriğini nasıl kazıyabileceğinize dair bir örneğe bakalım:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
id = soup.find(id = 'enter the target id here')
print(id.text)

Bunu bir sınıf adı için yapmak için, İD ile birlikte sınıf . Ancak, yazma sınıf Python bunu bir anahtar kelime olarak gördüğü için doğrudan sözdizimi karışıklığına neden olur. Bu hatayı atlamak için sınıfın önüne aşağıdaki gibi bir alt çizgi yazmanız gerekir: sınıf_ .

Özünde, kimliği içeren satır şöyle olur:

my_classes = soup.find(class_ = 'enter the target class name here')
print(my_classes.text)

Bununla birlikte, ilgili kimliği veya sınıfıyla belirli bir etiket adını çağırarak da bir web sayfasını kazıyabilirsiniz:

data = soup.find_all('div', class_ = 'enter the target class name here')
print(data)

Güzel Çorba ile Yeniden Kullanılabilir Bir Kazıyıcı Nasıl Yapılır

Bazı etiketlerin içeriğini ve kimliklerini alan yeniden kullanılabilir bir kazıyıcı yapmak için bir sınıf oluşturabilir ve önceki tüm kodu o sınıftaki bir işlevde bir araya getirebilirsiniz. Bunu, beş bağımsız değişkeni kabul eden bir işlev oluşturarak yapabiliriz: bir URL, iki etiket adı ve bunlara karşılık gelen kimlikler veya sınıflar.

Bir e-ticaret sitesinden gömlek fiyatlarını sıyırmak istediğinizi varsayalım. Aşağıdaki örnek sıyırıcı sınıfı, karşılık gelen kimlikleri veya sınıfları ile fiyat ve gömlek etiketlerini çıkarır ve ardından sütun adları olarak 'Fiyat' ve Gömlek_adı olan bir Pandas veri çerçevesi olarak döndürür.

emin olun pip yükleme pandaları Henüz yapmadıysanız, terminal aracılığıyla.

import pandas as pd
class scrapeit:
try:
def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None):
if not (website and tag1 and id1 and tag2 and id2)==None:
try:
page = requests.get(website)
soup = BeautifulSoup(page.content, 'html.parser')
infotag1 = soup.find_all(tag1, id1)
infotag2 = soup.find_all(tag2, id2)
priced = [prices.text for prices in infotag1]
shirt = [shirts.text for shirts in infotag2]
data = {
'Price':priced,
'Shirt_name':shirt}
info = pd.DataFrame(data, columns=['Price', 'Shirt_name'])
print(info)
except:
print('Not successful')
else:
print('Oops! Please enter a website, two tags and thier corresponding ids')
except:
print('Not successful!')

Az önce yaptığınız kazıyıcı yeniden kullanılabilir bir modüldür ve onu başka bir Python dosyasında içe aktarabilir ve kullanabilirsiniz. aramak için Kazımak sınıfından işlev, kullanırsınız scrapeit.scrape('Web Sitesi URL'si', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . URL'yi ve diğer parametreleri sağlamazsanız, Başka ifadesi bunu yapmanızı ister.

Bu scaper'ı başka bir Python dosyasında kullanmak için şu şekilde içe aktarabilirsiniz:

from scraper_module import scrapeit
scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

Not: scraper_module kazıyıcı sınıfını tutan Python dosyasının adıdır.

Ayrıca kontrol edebilirsiniz Güzel Çorba belgeleri bundan en iyi şekilde nasıl yararlanabileceğinize daha derine dalmak istiyorsanız.

Güzel Çorba, Değerli Bir Web Kazıma Aracıdır

Beautiful Soup, kazıma sırasında verilerinizin nasıl geçtiğini kontrol etmenizi sağlayan güçlü bir Python ekran kazıyıcıdır. Fiyatlandırma, pazar eğilimleri ve daha fazlası gibi rakiplerin web verilerine erişmenizi sağladığı için değerli bir iş aracıdır.

eksik olan klasik gmail'e geri dön

Bu makalede bir etiket kazıyıcı yapmış olsak da, daha kullanışlı kazıma araçları yapmak için bu güçlü Python kitaplığı ile oynamaya devam edebilirsiniz.

Paylaş Paylaş Cıvıldamak E-posta Çevrimiçi En İyi Web Kazıma Araçları

Analitik amaçlar için web sitelerinden veri toplamanız mı gerekiyor? Bu web kazıma araçları bunu kolaylaştırır.

Sonrakini Oku
İlgili konular
  • Programlama
  • piton
Yazar hakkında Idisou Omisola(94 Makale Yayımlandı)

Idowu akıllı teknoloji ve üretkenlik konusunda tutkulu. Boş zamanlarında kodlamayla uğraşıyor ve canı sıkılınca satranç tahtasına geçiyor ama arada sırada rutinden kopmayı da seviyor. İnsanlara modern teknolojinin yolunu gösterme tutkusu onu daha fazla yazmaya motive ediyor.

Idowu Omisola'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın