Python:
#status code : 200 ise tüm verileri alabiliriz
# 403 ise bizi engelliyor olabilir status code'lara ufaktan goz gezdirebilirsiniz
#kodlarda hata alırsanız :
import requests
from bs4 import BeautifulSoup
headers_parametre = {"what is my user agent yaz internete cıkan degeri buraya yaz"}
a=requests.get("https://youtube.com",headers=headers_parametre)
#her requests.get koduna headers=headers_parametre degerini ekleyin hata almıyorsanız burayı geçebilirsiniz
#-----------------------------
#bazen hatalar olabiliyor ufak bi araştırma ile anlarsınız ne oldugunu direk hata cıktısını tarayıcıya yapıstırın
import requests
from bs4 import BeautifulSoup
#a = requests.get("https://youtube.com")
#soup = BeautifulSoup(a,'html.parser')
#print(soup.text)#hatalı kod
#hatalı koddan cıkan hata mesajını internette arattım ve boyle yazmam gerekiyormuş :
a = requests.get("https://youtube.com")
soup = BeautifulSoup(a.text,'html.parser')
print(soup)
#---------------------------------
#icerigi okunaklı hale getirmek
import requests
from bs4 import BeautifulSoup
#bu kodu oncelikle tek basına calistir
a = requests.get("https://youtube.com")
b = BeautifulSoup(a.text,'html.parser')
#print(b)
#sonrada bu kodu calistir
a = requests.get("https://youtube.com")
b = BeautifulSoup(a.text,'html.parser')
print(b.prettify()) #html icerigini düzenli bir şekilde yazdırır
#-----------------------------------------------------
import requests
from bs4 import BeautifulSoup
#etiketteki textleri almak mesela <a href="site.com"> etiketini almak istiyoruz
#burası düzensiz hali:
d = requests.get("https://youtube.com")
soup = BeautifulSoup(d.text,'html.parser')
a_lar = soup.find_all('a')
print(a_lar)
#düzenli hali:
for link in a_lar:
href = link.get('href')
if href and href.startswith("http"):
print(href)
#-----------------------------------------------------
import requests
from bs4 import BeautifulSoup
a = requests.get("https://youtube.com")
b = BeautifulSoup(a.content,'html.parser')
#buda baska bir kullanım secenegi
print(b.div) # div etiketini verir
print(b.find_all('div'))#butun div etiketlerini verir
for i in b.text:
print(b.div) #div etiketinin text halini verir
for i in b.text:
print(b.find_all('div')) #bütün div etiketlerinin text halini verir
#-----------------------------------------------------
import requests
from bs4 import BeautifulSoup
#class'a yonelik icerik cekmek
#web sitesi icin yaparsam karısık olur burdan daha iyi anlarsınız
içerik = """<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1 class="birinci">merhaba dünya</h1>
<p class="ikinci">bugun cok güzel bir gün</p>
<p class="ücüncü">bugun hava kotu</p>
</body>
</html>"""
#simdi biz normalde
print(BeautifulSoup(içerik,'html.parser').find_all("p")) # diyerek butun p etiketlerini alırız
#ama biz belirli bir class'a gore almak istiyorsak :
print(BeautifulSoup(içerik,'html.parser').find_all("p",{"class":"ikinci"}))
#veya
print(BeautifulSoup(içerik,'html.parser').find_all("p",{"class":"ücüncü"}))
#yazabiliriz
#siteye yapalim :
a = requests.get("https://youtube.com").content
print(BeautifulSoup(a,'html.parser').find_all("div",{'class':'details flex-1'}))
#arayada şu bilgileri koyalım:
#contents nedir
a = BeautifulSoup(içerik,'html.parser')
print("\n\ncontents içeriği :\n",a.contents)
#text nedir
a = BeautifulSoup(içerik,'html.parser')
print("\n-----------------\ntext içeriği :",a.text)
#------------------
import requests
from bs4 import BeautifulSoup
#id değerlerinide şoyle alabiliriz :
içerik = """<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1 id="birinci">merhaba dünya</h1>
<p id="ikinci">bugun cok güzel bir gün</p>
<p id="ücüncü">bugun hava kotu</p>
</body>
</html>"""
print(BeautifulSoup(içerik,'html.parser').find_all("p",{"id":"ikinci"}))
#bir sitede deneyelim :
a = requests.get("https://www.youtube.com").content
print(BeautifulSoup(a,'html.parser').find_all("div",{"id":"primary-info"}))
#-----------------------------------
#status code'lar :
import requests
from bs4 import BeautifulSoup
linkler = ["youtube","google","linkedin"]
#linkedin hesabın yoksa farklı bir status_code değeri ile karsılasabilirsin (niye farklı bir deger geldi deme)
for i in linkler:
url = f"https://{i}.com"
a = requests.get(url).status_code,'html.parser'
print(f"{i}'nin status codu : {a}")
#-----------------------------------
import requests
from bs4 import BeautifulSoup
linkler = ["youtube","google","linkedin"]
#linkedin hesabın yoksa farklı bir status_code değeri ile karsılasabilirsin (niye farklı bir deger geldi deme)
for i in linkler:
url = f"https://{i}.com"
a = BeautifulSoup(requests.get(url).text,'html.parser')
print(f"{i}'nin <span> değerleri : \n--------------------------\n{a.find_all('span')}\n\n\n\n\n")
#span değeri yerine p h1 title değerleri gibi tagler yazılabilir
#-----------------------------------