İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Python ile Web Scraping: Kullanılabilecek Kütüphaneler

Gbmdpof - ait Kullanıcı Resmi (Avatar)
Kıdemli Yazılımcı
Üyelik tarihi:
09/2016
Mesajlar:
1.998
Konular:
157
Teşekkür (Etti):
197
Teşekkür (Aldı):
712
Ticaret:
(0) %
11-05-2018 22:51
#1
Python ile Web Scraping: Kullanılabilecek Kütüphaneler
Web scraping, projelerinizde kullanmak için veri bulmak için en önemli yöntemlerden biridir. Web scraping için normalde onlarca kütüphane olmasına rağmen bu 5'i en çok kullanılanlardır ve büyük ihtimalle bunlardan başka bir kütüphaneye ihtiyacınız olmayacaktır. Hatta bu 5'inin hepsini öğrenmenize bile gerek yok. Peki hangilerini ne için öğrenmelisiniz?

  • requests, birçok yerde işinize yarayacaktır. Bu yüzden web scraping ile uğraşmıyor olsanız bile bunu öğrenmeniz sizin için faydalı olacaktır.
  • lxml veya BeautifulSoup'tan birini öğrenmeniz sizin işinizi oldukça kolaylaştıracaktır. Sizin yerinize HTML'i parse edecektir (çözümleyecektir, işleyecektir, ayrıştıracaktır; tam karşılığını bulamadım) bu kütüphaneler.
  • Selenium, JavaScript gerektiren sitelerden veri çekmeniz gerekiyorsa işinize yarayacaktır fakat çoğu durumda JavaScript çalıştırmaya ihtiyacınız olmayacaktır.
  • scrapy, birkaç sayfa ile uğraşmak yerine büyük bir web scraper yapacaksanız işinizi kolaylaştıracak ve sizi fazla kod yazmaktan kurtaracaktır.

requests

requests'i tanımlamak için sloglanlarını kullanacağım, "İnsanlar için HTTP" (HTTP for Humans). requests ile kolayca HTTP istekleri gönderebiliriz ve dönen veriyi alabiliriz. Bu dönen veriyi ise sonradan parse edip istediğimiz veriye ulaşabiliriz.

Kod:
import requests

sayfa = requests.get('https://www.turkhackteam.net/') #https://www.turkhackteam.net adresine bir GET isteği gönderelim
print(sayfa.text) #Dönen veriyi print edelim
requests ile bir istek göndermek bu kadar kolay. Daha fazla bilgi için:
Quickstart — Requests 2.18.4 documéntation
https://www.turkhackteam.org/python/...kullanimi.html

BeautifulSoup

Verimiz elimizde, şimdi ne yapacağız? Onu parse edeceğiz. Bunu da BeautifulSoup ile yapacağız.

BeautifulSoup, diğer parserlara yavaş olsa bile oldukça kolaydır ve bu yavaşlığı parserı değiştirerek (yine BeautifulSoup'u kullanacağız ama farklı bir parser) giderebiliriz.

Ayrıca BeautifulSoup'un bir diğer avantajı da şifrelemeleri otomatik olarak algılamasıdır. Bu sayede özel karakterler içeren sayfalarda sorun yaşamazsınız.

Kod:
from bs4 import BeautifulSoup

soup = BeautifulSoup(sayfa.text, 'html.parser') #Bir BeautifulSoup nesnesi oluşturalım 
soup.find_all('img') #Bu sayfadaki bütün resimleri bulalım.
Bir sayfadaki bütün resimleri bulan bir programı yapmak bu kadar kolay. Daha fazla bilgi için:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/

lxml

lxml, iyi performanslı bir parsing kütüphanesidir. Diğer parsing kütüphanelerine göre daha özellikli ve hızlıdır.

Kod:
from lxml import html

tree = html.fromstring(sayfa.text) #String veri ile bir lxml.html nesnesi oluşturalım
tree.xpath('//img') #XPath kullanarak bu sayfadaki bütün resimleri bulalım.
XPath veya CSS biliyorsanız işiniz daha da kolaylaşacaktır ama bilmiyorsanız da öğrenmek sizi zorlamayacaktır. Daha fazla bilgi için:
lxml - Processing XML and HTML with Python

BeautifulSoup mu lxml mi?

Bu tamamen sizin tercihinize bağlıdır. Zaten iki kütüphane de birbirini destekliyor. Yani birine alışıp sonra değiştirmek isterseniz aynı kütüphaneyi diğerinin parserı ile de kullanabilirsiniz.

Sizin için en iyi olanı bulmak için ikisini de deneyip birini seçebilirsiniz.

Selenium

requests, çoğu zaman işimizi görse de her siteden veri çekemez. Bazı siteler verileri sunmak için JavaScript kullanır. Mesela, verinin yüklenmesi için aşağıya kaydırmanızı veya bir butona tıklamanızı isteyebilir.

Böyle siteler için Selenium kullanabiliriz. Selenium ile normal bir browser gibi davranabiliriz.

Kod:
from selenium import webdriver

driver = webdriver.Firefox() #Firefox web driverı oluşturalım
driver.get('https://www.turkhackteam.net/') #https://www.turkhackteam.net adresine gidelim
Daha fazla bilgi için:

https://selenium-python.readthedocs.io/

Scrapy

Artık web sitelerinden veri çekip bunları kullanabiliyoruz. Peki ya bundan daha fazlasına ihtiyaç duyarsak ne yapacağız? Eğer bir websitenin tamamını sistematik bir şekilde tarayan bir spider yapacaksak ne yapacağız? İşte burada Scrapy devreye giriyor. Aslında scrapy teknik olarak bir kütüphane bile değil, bir scraping frameworkü. Bu demektir ki istekleri yönetetbiliriz, kullanıcı oturumlarını koruyabiliriz, yönlendirmeleri takip edebiliriz.

Bu ayrıca demektir ki ayrı scraping kütüphanelerini de kullanabiliriz. Mesela Selenium kullanmamız gerekiyorsa bunu yapabiliriz.


Scrapy mimarisi

Yani crawlerınızı yeniden kullanmanız, yeniden ayarlamanız gerekiyorsa bunu scrapy ile kolayca yapabilirsiniz. Daha fazla bilgi için:
https://scrapy.org/


Kaynak: elitedatascience.com
Konu Gbmdpof tarafından (13-05-2018 19:30 Saat 19:30 ) değiştirilmiştir.
BufGix, Ceen Teşekkür etti.
Ceen - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
07/2017
Mesajlar:
219
Konular:
19
Teşekkür (Etti):
70
Teşekkür (Aldı):
75
Ticaret:
(0) %
12-05-2018 19:51
#2
Eline sağlık kardeşim.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı