Güzel Çorba - Kurulum
BeautifulSoup standart bir python kitaplığı olmadığı için önce onu kurmamız gerekiyor. En sonuncusu olan BeautifulSoup 4 kütüphanesini (BS4 olarak da bilinir) kuracağız.
Mevcut kurulumu bozmayacak şekilde çalışma ortamımızı izole etmek için önce sanal bir ortam oluşturalım.
Sanal ortam oluşturma (isteğe bağlı)
Bir sanal ortam, dış kurulumu etkilemeden belirli bir proje için izole edilmiş bir çalışma python kopyası oluşturmamızı sağlar.
Herhangi bir python paket makinesini kurmanın en iyi yolu pip kullanmaktır, ancak pip zaten kurulu değilse (komutunuzda veya kabuk isteminizde - "pip –version" kullanarak kontrol edebilirsiniz), aşağıdaki komutu vererek kurabilirsiniz -
Linux ortamı
$sudo apt-get install python-pip
Windows ortamı
Windows'ta pip kurmak için aşağıdakileri yapın -
Get-pip.py dosyasını şu adresten indirin: https://bootstrap.pypa.io/get-pip.py veya github'dan bilgisayarınıza.
Komut istemini açın ve get-pip.py dosyasını içeren klasöre gidin.
Aşağıdaki komutu çalıştırın -
>python get-pip.py
İşte bu, pip artık Windows makinenize yüklenmiştir.
Aşağıdaki komutu çalıştırarak pip'inizin kurulu olduğunu doğrulayabilirsiniz -
>pip --version
pip 19.2.3 from c:\users\yadur\appdata\local\programs\python\python37\lib\site-packages\pip (python 3.7)
Sanal ortamı kurma
Komut isteminizde aşağıdaki komutu çalıştırın -
>pip install virtualenv
Çalıştırdıktan sonra aşağıdaki ekran görüntüsünü göreceksiniz -
Aşağıdaki komut, mevcut dizininizde bir sanal ortam ("myEnv") oluşturacaktır -
>virtualenv myEnv
Ekran görüntüsü
Sanal ortamınızı etkinleştirmek için aşağıdaki komutu çalıştırın -
>myEnv\Scripts\activate
Yukarıdaki ekran görüntüsünde, "myEnv" sanal ortamı altında olduğumuzu söyleyen önek olarak "myEnv" olduğunu görebilirsiniz.
Sanal ortamdan çıkmak için devre dışı bırak'ı çalıştırın.
(myEnv) C:\Users\yadur>deactivate
C:\Users\yadur>
Sanal ortamımız hazır olduğu için şimdi beautifulsoup kuralım.
BeautifulSoup Kurulumu
BeautifulSoup standart bir kütüphane olmadığı için onu kurmamız gerekiyor. BeautifulSoup 4 paketini (bs4 olarak bilinir) kullanacağız.
Linux Makinesi
Sistem paket yöneticisini kullanarak bs4'ü Debian veya Ubuntu linux üzerine kurmak için aşağıdaki komutu çalıştırın -
$sudo apt-get install python-bs4 (for python 2.x)
$sudo apt-get install python3-bs4 (for python 3.x)
Bs4'ü easy_install veya pip kullanarak kurabilirsiniz (sistem paketleyiciyi kullanarak yüklemede sorun bulursanız).
$easy_install beautifulsoup4
$pip install beautifulsoup4
(Python3 kullanıyorsanız, sırasıyla easy_install3 veya pip3 kullanmanız gerekebilir)
Windows Makinesi
Beautifulsoup4'ü pencerelere kurmak çok basittir, özellikle zaten pip yüklediyseniz.
>pip install beautifulsoup4
Yani şimdi güzelsoup4 makinemize kuruldu. Kurulumdan sonra karşılaşılan bazı problemlerden bahsedelim.
Kurulumdan sonra sorunlar
Windows makinesinde karşılaşabilirsiniz, yanlış sürüm kurulurken esas olarak hata -
hata: ImportError “No module named HTMLParser”, sonra Python 3 altında kodun python 2 sürümünü çalıştırıyor olmalısınız.
hata: ImportError “No module named html.parser” hatası varsa, Python 2 altında kodun Python 3 sürümünü çalıştırıyor olmalısınız.
Yukarıdaki iki durumdan kurtulmanın en iyi yolu BeautifulSoup'u yeniden kurmak ve mevcut kurulumu tamamen kaldırmaktır.
Eğer alırsan SyntaxError “Invalid syntax” ROOT_TAG_NAME = u '[belge]' satırındaysa, python 2 kodunu python 3'e, yalnızca paketi kurarak dönüştürmeniz gerekir -
$ python3 setup.py install
veya python'un 2 ila 3 dönüştürme komut dosyasını bs4 dizininde manuel olarak çalıştırarak -
$ 2to3-3.2 -w bs4
Bir Ayrıştırıcı Yükleme
Varsayılan olarak, Beautiful Soup Python'un standart kitaplığında bulunan HTML ayrıştırıcısını destekler, ancak lxml ayrıştırıcı veya html5lib ayrıştırıcı gibi birçok harici üçüncü taraf python ayrıştırıcısını da destekler.
Lxml veya html5lib ayrıştırıcısını kurmak için şu komutu kullanın -
Linux Makinesi
$apt-get install python-lxml
$apt-get insall python-html5lib
Windows Makinesi
$pip install lxml
$pip install html5lib
Genellikle, kullanıcılar hız için lxml kullanır ve python'un yerleşik HTML ayrıştırıcısı olarak python 2'nin (2.7.3 sürümünden önce) veya python 3'ün (3.2.2'den önce) eski sürümünü kullanıyorsanız, lxml veya html5lib ayrıştırıcısı kullanmanız önerilir. eski sürümün kullanımında pek iyi değil.
Güzel Çorba Çalıştırmak
Güzel Çorba paketimizi html sayfalarından birinde test etme zamanı (web sayfasını alarak - https://www.tutorialspoint.com/index.htm, istediğiniz herhangi bir web sayfasını seçebilir ve ondan bazı bilgiler alabilirsiniz.
Aşağıdaki kodda, başlığı web sayfasından çıkarmaya çalışıyoruz -
from bs4 import BeautifulSoup
import requests
url = "https://www.tutorialspoint.com/index.htm"
req = requests.get(url)
soup = BeautifulSoup(req.text, "html.parser")
print(soup.title)
Çıktı
<title>H2O, Colab, Theano, Flutter, KNime, Mean.js, Weka, Solidity, Org.Json, AWS QuickSight, JSON.Simple, Jackson Annotations, Passay, Boon, MuleSoft, Nagios, Matplotlib, Java NIO, PyTorch, SLF4J, Parallax Scrolling, Java Cryptography</title>
Yaygın bir görev, bir web sayfasındaki tüm URL'leri çıkarmaktır. Bunun için aşağıdaki kod satırını eklememiz yeterlidir -
for link in soup.find_all('a'):
print(link.get('href'))
Çıktı
https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/about/about_careers.htm
https://www.tutorialspoint.com/questions/index.php
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/codingground.htm
https://www.tutorialspoint.com/current_affairs.htm
https://www.tutorialspoint.com/upsc_ias_exams.htm
https://www.tutorialspoint.com/tutor_connect/index.php
https://www.tutorialspoint.com/whiteboard.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/tutorialslibrary.htm
https://www.tutorialspoint.com/videotutorials/index.php
https://store.tutorialspoint.com
https://www.tutorialspoint.com/gate_exams_tutorials.htm
https://www.tutorialspoint.com/html_online_training/index.asp
https://www.tutorialspoint.com/css_online_training/index.asp
https://www.tutorialspoint.com/3d_animation_online_training/index.asp
https://www.tutorialspoint.com/swift_4_online_training/index.asp
https://www.tutorialspoint.com/blockchain_online_training/index.asp
https://www.tutorialspoint.com/reactjs_online_training/index.asp
https://www.tutorix.com
https://www.tutorialspoint.com/videotutorials/top-courses.php
https://www.tutorialspoint.com/the_full_stack_web_development/index.asp
….
….
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/free_web_graphics.htm
https://www.tutorialspoint.com/online_file_conversion.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/free_online_whiteboard.htm
http://www.tutorialspoint.com
https://www.facebook.com/tutorialspointindia
https://plus.google.com/u/0/+tutorialspoint
http://www.twitter.com/tutorialspoint
http://www.linkedin.com/company/tutorialspoint
https://www.youtube.com/channel/UCVLbzhxVTiTLiVKeGV7WEBg
https://www.tutorialspoint.com/index.htm
/about/about_privacy.htm#cookies
/about/faq.htm
/about/about_helping.htm
/about/contact_us.htm
Benzer şekilde, beautifulsoup4 kullanarak faydalı bilgiler elde edebiliriz.
Şimdi yukarıdaki örnekte "çorba" yı daha iyi anlayalım.