Python BeutifulSoup html ve xml dosyalarını işlemek için oluşturulmuş bir modüldür.
BeautifulSoup modülü yardımıyla http://ekonomi.haber7.com sitesi üzerinden haber başlıkları, linkleri ve içeriklerinin çekilmesini adım adım anlatımı,
1. Modüllerin dahil edilmesi, çağrılması(request, BeautifulSoup) ve headers bilgilerin oluşturulmasını içerir. Headers bilgileri karşı site tarafından engellenmemek için kulanılır.
import requests
from bs4 import BeautifulSoup
#Site tarafından bloklanmamak için gönderdiğimiz tarayıcı bilgileri
headers = requests.utils.default_headers()
headers.update({
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0',
})
2. İstek yapılacak ve html/lxml dönüşümü yapılacak alanı belirtir.
print("Lütfen bekleyin... Haberler çekiliyor...\n")
url= "http://ekonomi.haber7.com/"
istek=requests.get(url,headers)
soup = BeautifulSoup(istek.content, "lxml")
3. Site içeresinden tespit edilen haber başlıklarını ve linklerin yollarını belirtir.
print(" LİNKlER VE HABERLER ŞU ŞEKİLDE:\n ------------------------------")
#Learn News Name and Link From Website
haberler=soup.find_all("div",{"class": "title"})
linkler=soup.find_all("a",{"class": "news"})
4. Çekilen linkler içeresinden tekrar istek yaparak haber içeriğinin ekrana yazılmasını gösterir.
sayi=1 # we use count for news
for i in haberler:
print(sayi, "-)", i.text)
sayi+=1
sayi =1
for i in linkler:
print(sayi, "-)", i.get("href"))
sayi+=1
istek2 = requests.get(i.get("href"), headers)
istek_soup = BeautifulSoup(istek2.content, "lxml")
print(istek2.status_code, "İstek durumu")
metin = istek_soup.find_all("div", {"class": "news-content"})
for j in metin:
print(j.text)
Python ile çekilen haber başlıkların ekran görüntüleri
Python BeautifulSoup ile haber linkleri ve haber içerikleri
Yapılmış olan uygulamanın çalaştırılabilir veya tamamına ulaşmak için github asim06 adresinden elde edebilirsiniz.
Hocam kodunuzu proje ödevimde kullanmak istiyorum araştırma yaparken rastladım şu an yarım bir kodum var tamamlayan kısım sizin kodunuz sizinle iletişime geçmek isterim yardımınız çok faydalı olur.
Tebrikler , güzel bir çalışma olmuş
Teşekkür ederim.