10-02-2021, Saat: 23:55
1.BeautifulSoup Modülü Nedir ?
![[Resim: aa%2B%25281%2529%2B%25281%2529%2B%25281%...1%2529.png]](https://4.bp.blogspot.com/-OoYwo2v-Kok/XvdloyK_eFI/AAAAAAAAERc/ogr680ZKqyALMrDP5kMvhFxo2YyU9btOQCK4BGAYYCw/s320/aa%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529.png)
BeautifulSoup, HTML veya XML dosyalarını işlemek için oluşturulmuş güçlü ve hızlı bir kütüphanedir.
Requests modülü internet sitelerine istekte bulunma işlemine yarar. Requets modülü tarayıcı gerekmeksizin sitelere istek yapabilir.İstek sonucunda bize sitenin html kodlarını döndürür.
Beautifulsoup modülü ise request modülü ile gelen html kodlarını düzenli bir şekilde göstermeye yarar.
Bu modüller python kurulumu ile gömülü şekilde gelmemektedir. Modülleri kullanmak için kurulması gerekmektedir.
BeautifulSoup ile çalışmaya başlamak için, makinenize Python programlama ortamı (yerel veya sunucu tabanlı) ayarlamanız gerekir. Python genellikle OS X'e önceden kurulmuştur, ancak Windows kullanıyorsanız resmi web sitesinden dili indirip yüklemeniz gerekir.
2.BeautifulSoup Modülü Kurulumu
Windows İşletim Sistemleri İçin kurulum ;
Cmd ekranını açınız ve aşağıdaki satırları yazarak kurunuz.
Bu modül ile web üzerindeki isteklerinizi yöneteceksiniz. Mesela bu modül ile API entpointlerine PUT, DELETE, POST gibi istekler atabilirsiniz.
![[Resim: image002.png]](https://1.bp.blogspot.com/-8D9D3TqalhM/XqB5bMmNTHI/AAAAAAAADm0/ouMf3az4Owwtc20SPzsrhRAni9PNAycVACLcBGAsYHQ/s1600/image002.png)
![[Resim: image003.png]](https://1.bp.blogspot.com/-oyHWKEIsFbg/XqB5oISNvpI/AAAAAAAADm4/l9ejfR9fBoohZHAT4bG7a0DHJjOpoWauQCLcBGAsYHQ/s1600/image003.png)
Linux [b][i]İşletim Sistemleri İçin Kurulum;[/i][/b]
Terminali açın python-setuptools u kurunuz.
Kurulumlar bittikten sonra requests ve beatifulsoup’u python da import ediyoruz.
![[Resim: image004.png]](https://1.bp.blogspot.com/-S3L2Unc3UGY/XqB5_CWVKjI/AAAAAAAADnE/oPZpncpwu6UQgug3AZy7c3n18OdEyBHlACLcBGAsYHQ/s1600/image004.png)
İmport işlemleri başarılı bir şekilde tamamlandı.
Sıradaki işlemimi ise requests ile https://baydarmazlum.blogspot.com/ ‘a requests.get ile istek atıyoruz.Giden istek nasıl cevap vermiş bunu görüntülemek için r.status_code komudu ile geri dönen değerimize bakıyoruz. Aşağıda resimde de görüldüğü üzere 200 değerini döndürmüş yani başarılı bir şekilde geri dönüş olmuş.Sayfanın kaynak kodunu çekip çekmediğini öğrenmek içi ise r.content komudunu kullanıyoruz ve resimde görüldüğü üzere kaynak kodlar başarılı bir şekilde çekilmiş durumdadır.
![[Resim: image005.png]](https://1.bp.blogspot.com/-UW-7C5Ur74w/XqB6WF-kAFI/AAAAAAAADnM/sRVGVKwa7O8chXrw56qncEvapDUnPSEQwCLcBGAsYHQ/s1600/image005.png)
soup = BeautifulSoup(r.content,"lxml") komutu ile alınan kaynak kodlarını BeatifulSoup içinde bulunan xlm modülü ile parçalayıp düzenli hale gelmesini sağladık.
![[Resim: image006.png]](https://1.bp.blogspot.com/-YHdVvd_KhzE/XqB8D_qaK9I/AAAAAAAADnY/yA9RRXzisU0ol2xsl326zMlu9NN7ooFfACLcBGAsYHQ/s1600/image006.png)
Web sayfamın kaynağını görüntülediğim zaman blok blok her birinin bilgisini görmekteyiz.Her class aslında bizim için birer veri niteliğinde bunları tek tek ayırarak ayırma işlemi gerçekleştireceğiz.
![[Resim: image007.png]](https://1.bp.blogspot.com/-YI3JSMzvRzg/XqB854Y26dI/AAAAAAAADng/uLq0PGMlmjcBCwHaiq07Kq69UaOYUG7FQCLcBGAsYHQ/s1600/image007.png)
soup.find("div",attrs={"class":"blog-post hentry index-post"}) komutu find metodu ile ilk bloğun verilerini çekmiş olduk.
![[Resim: image008.png]](https://1.bp.blogspot.com/-E6giy8br2Aw/XqC3cHrg2xI/AAAAAAAADoM/2-SKGecwNNUFpTBqolVtUGm1O5qV60idgCLcBGAsYHQ/s1600/image008.png)
soup.find_all("div",attrs={"class":"blog-post hentry index-post"}) komutunu kullanırsak bu sefer her bloğu ayrı ayrı çekmiş oluruz.
![[Resim: image009.png]](https://1.bp.blogspot.com/-7ci6Eaj3nzc/XqC3yNsP8nI/AAAAAAAADoU/06xfLHHurowpR3x883z50NaCOelftaeBACLcBGAsYHQ/s1600/image009.png)
Bir diğer veri çekme aşamamız web sayfasındaki bulunan blog yazılarının başlıklarını çekmek üzere olacaktır. Bunun için
![[Resim: image010.png]](https://1.bp.blogspot.com/-TU2zRm8Ir1I/XqC5mYysl5I/AAAAAAAADog/Uwa_4cL3taohQRdinQHq-nrciIhdg16_gCLcBGAsYHQ/s1600/image010.png)
4.BeautifulSoup Modülü ile Web Sitesinden Verileri Çekme (Kod Hali)
Bu kısımda ise manuel el ile tek tek bulduğumuz verileri bir bot yazarak verilerin hepsini tek seferde çekmesini sağlıyacağız.Bunun için kaynak kodlar aşağıda gösterildiği şekildedir.
![[Resim: image011.png]](https://1.bp.blogspot.com/-sXHj9MzbgyY/XqC7QzAqe8I/AAAAAAAADos/4NjNW2-Pb6029RQbZeppSzBz6yyVq0jrQCLcBGAsYHQ/s1600/image011.png)
Yazmış olduğum vericekme.py kodlarını inceleyecek olursak;
1. Öncellikle requests ve beatifulsoup modüllerini import ediyoruz.
2. r değişkenimize requests ile sitemizi tanımlıyıp kaynak kodlarını çekiyoruz.
3. Çektiğimiz kaynak kodlarını soup adında bir değişkene kodlarımızı daha derli toplu gözükmesi için “lxml” formatına çeviriyoruz.
4. Sekizince satır kodumuzda ise sitemizin kaynak kodlarını bakarak istediğimiz bir bölümü bize find_all komudu ile getirmesini istiyoruz.
5. Son olarak bir çok alanda veri çekme işlemi yapmak için for döngüsünü kullanıyoruz.Çekmek istediğimiz veriler,Sitedeki Makalelerin İsmi,Yazarı,Makalelerin Yazılma Tarihleri ve Hangi Makaleler Hangi Kategoridedir diyerek bu bilgileri düzenli olarak ekrana yazdıyoruz.
Ekran Çıktısı:
![[Resim: image012.png]](https://1.bp.blogspot.com/-cbP2U55fOEc/XqC7hUqg4bI/AAAAAAAADow/3Fu5s-sL9MMIRY8uAY1lrxATmXXE0xBTQCLcBGAsYHQ/s1600/image012.png)
![[Resim: aa%2B%25281%2529%2B%25281%2529%2B%25281%...1%2529.png]](https://4.bp.blogspot.com/-OoYwo2v-Kok/XvdloyK_eFI/AAAAAAAAERc/ogr680ZKqyALMrDP5kMvhFxo2YyU9btOQCK4BGAYYCw/s320/aa%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529%2B%25281%2529.png)
BeautifulSoup, HTML veya XML dosyalarını işlemek için oluşturulmuş güçlü ve hızlı bir kütüphanedir.
Requests modülü internet sitelerine istekte bulunma işlemine yarar. Requets modülü tarayıcı gerekmeksizin sitelere istek yapabilir.İstek sonucunda bize sitenin html kodlarını döndürür.
Beautifulsoup modülü ise request modülü ile gelen html kodlarını düzenli bir şekilde göstermeye yarar.
Bu modüller python kurulumu ile gömülü şekilde gelmemektedir. Modülleri kullanmak için kurulması gerekmektedir.
- Beautiful Soup Python için bir HTML ve XML ayrıştırıcısıdır (parser). Beautiful Soup kütüphanesi kullanışlı olmasını şu özelliklerine borçludur:
- Beautiful Soup kötü girdi verseniz bile bozulmaz. Neredeyse orjinal belgenizle aynı anlama gelen bir ayrıştırma ağacı (parse tree) döndürür. Bu özellik çoğu zaman gereken bilgiyi almanız için yeterlidir.
- Beautiful Soup bir ayrıştırma ağacında kolayca gezinme (traversing), arama ve düzenleme yapmanıza olanak sağlayan birçok metot ve Python vari deyimler sağlar: her uygulama için baştan HTML veya XML ayrıştırıcı yazmanıza gerek kalmaz.
- Beautiful Soup gelen belgeleri Unicode'a, giden belgeleri de UTF-8'e kendiliğinden çevirir. Kodlamalarla uğraşmanıza gerek kalmaz.
BeautifulSoup ile çalışmaya başlamak için, makinenize Python programlama ortamı (yerel veya sunucu tabanlı) ayarlamanız gerekir. Python genellikle OS X'e önceden kurulmuştur, ancak Windows kullanıyorsanız resmi web sitesinden dili indirip yüklemeniz gerekir.
2.BeautifulSoup Modülü Kurulumu
Windows İşletim Sistemleri İçin kurulum ;
Cmd ekranını açınız ve aşağıdaki satırları yazarak kurunuz.
- İlk önce pip install requests komudu ile requests kuruyoruz.
Bu modül ile web üzerindeki isteklerinizi yöneteceksiniz. Mesela bu modül ile API entpointlerine PUT, DELETE, POST gibi istekler atabilirsiniz.
![[Resim: image002.png]](https://1.bp.blogspot.com/-8D9D3TqalhM/XqB5bMmNTHI/AAAAAAAADm0/ouMf3az4Owwtc20SPzsrhRAni9PNAycVACLcBGAsYHQ/s1600/image002.png)
- İkinci olarak ise pip install beautifulsoup4 komudu ile BeatifulSoup modülümüzü kuruyoruz.
![[Resim: image003.png]](https://1.bp.blogspot.com/-oyHWKEIsFbg/XqB5oISNvpI/AAAAAAAADm4/l9ejfR9fBoohZHAT4bG7a0DHJjOpoWauQCLcBGAsYHQ/s1600/image003.png)
Linux [b][i]İşletim Sistemleri İçin Kurulum;[/i][/b]
Terminali açın python-setuptools u kurunuz.
- sudo apt-get install python-setuptools
- sudo pip3 install requests
- sudo pip3 install beautifulsoup4
Kurulumlar bittikten sonra requests ve beatifulsoup’u python da import ediyoruz.
![[Resim: image004.png]](https://1.bp.blogspot.com/-S3L2Unc3UGY/XqB5_CWVKjI/AAAAAAAADnE/oPZpncpwu6UQgug3AZy7c3n18OdEyBHlACLcBGAsYHQ/s1600/image004.png)
İmport işlemleri başarılı bir şekilde tamamlandı.
Sıradaki işlemimi ise requests ile https://baydarmazlum.blogspot.com/ ‘a requests.get ile istek atıyoruz.Giden istek nasıl cevap vermiş bunu görüntülemek için r.status_code komudu ile geri dönen değerimize bakıyoruz. Aşağıda resimde de görüldüğü üzere 200 değerini döndürmüş yani başarılı bir şekilde geri dönüş olmuş.Sayfanın kaynak kodunu çekip çekmediğini öğrenmek içi ise r.content komudunu kullanıyoruz ve resimde görüldüğü üzere kaynak kodlar başarılı bir şekilde çekilmiş durumdadır.
![[Resim: image005.png]](https://1.bp.blogspot.com/-UW-7C5Ur74w/XqB6WF-kAFI/AAAAAAAADnM/sRVGVKwa7O8chXrw56qncEvapDUnPSEQwCLcBGAsYHQ/s1600/image005.png)
soup = BeautifulSoup(r.content,"lxml") komutu ile alınan kaynak kodlarını BeatifulSoup içinde bulunan xlm modülü ile parçalayıp düzenli hale gelmesini sağladık.
![[Resim: image006.png]](https://1.bp.blogspot.com/-YHdVvd_KhzE/XqB8D_qaK9I/AAAAAAAADnY/yA9RRXzisU0ol2xsl326zMlu9NN7ooFfACLcBGAsYHQ/s1600/image006.png)
Web sayfamın kaynağını görüntülediğim zaman blok blok her birinin bilgisini görmekteyiz.Her class aslında bizim için birer veri niteliğinde bunları tek tek ayırarak ayırma işlemi gerçekleştireceğiz.
![[Resim: image007.png]](https://1.bp.blogspot.com/-YI3JSMzvRzg/XqB854Y26dI/AAAAAAAADng/uLq0PGMlmjcBCwHaiq07Kq69UaOYUG7FQCLcBGAsYHQ/s1600/image007.png)
soup.find("div",attrs={"class":"blog-post hentry index-post"}) komutu find metodu ile ilk bloğun verilerini çekmiş olduk.
![[Resim: image008.png]](https://1.bp.blogspot.com/-E6giy8br2Aw/XqC3cHrg2xI/AAAAAAAADoM/2-SKGecwNNUFpTBqolVtUGm1O5qV60idgCLcBGAsYHQ/s1600/image008.png)
soup.find_all("div",attrs={"class":"blog-post hentry index-post"}) komutunu kullanırsak bu sefer her bloğu ayrı ayrı çekmiş oluruz.
![[Resim: image009.png]](https://1.bp.blogspot.com/-7ci6Eaj3nzc/XqC3yNsP8nI/AAAAAAAADoU/06xfLHHurowpR3x883z50NaCOelftaeBACLcBGAsYHQ/s1600/image009.png)
Bir diğer veri çekme aşamamız web sayfasındaki bulunan blog yazılarının başlıklarını çekmek üzere olacaktır. Bunun için
- for asd in bloglar:
- print(asd.h2.text)
![[Resim: image010.png]](https://1.bp.blogspot.com/-TU2zRm8Ir1I/XqC5mYysl5I/AAAAAAAADog/Uwa_4cL3taohQRdinQHq-nrciIhdg16_gCLcBGAsYHQ/s1600/image010.png)
4.BeautifulSoup Modülü ile Web Sitesinden Verileri Çekme (Kod Hali)
Bu kısımda ise manuel el ile tek tek bulduğumuz verileri bir bot yazarak verilerin hepsini tek seferde çekmesini sağlıyacağız.Bunun için kaynak kodlar aşağıda gösterildiği şekildedir.
![[Resim: image011.png]](https://1.bp.blogspot.com/-sXHj9MzbgyY/XqC7QzAqe8I/AAAAAAAADos/4NjNW2-Pb6029RQbZeppSzBz6yyVq0jrQCLcBGAsYHQ/s1600/image011.png)
Yazmış olduğum vericekme.py kodlarını inceleyecek olursak;
1. Öncellikle requests ve beatifulsoup modüllerini import ediyoruz.
2. r değişkenimize requests ile sitemizi tanımlıyıp kaynak kodlarını çekiyoruz.
3. Çektiğimiz kaynak kodlarını soup adında bir değişkene kodlarımızı daha derli toplu gözükmesi için “lxml” formatına çeviriyoruz.
4. Sekizince satır kodumuzda ise sitemizin kaynak kodlarını bakarak istediğimiz bir bölümü bize find_all komudu ile getirmesini istiyoruz.
5. Son olarak bir çok alanda veri çekme işlemi yapmak için for döngüsünü kullanıyoruz.Çekmek istediğimiz veriler,Sitedeki Makalelerin İsmi,Yazarı,Makalelerin Yazılma Tarihleri ve Hangi Makaleler Hangi Kategoridedir diyerek bu bilgileri düzenli olarak ekrana yazdıyoruz.
Ekran Çıktısı:
![[Resim: image012.png]](https://1.bp.blogspot.com/-cbP2U55fOEc/XqC7hUqg4bI/AAAAAAAADow/3Fu5s-sL9MMIRY8uAY1lrxATmXXE0xBTQCLcBGAsYHQ/s1600/image012.png)