BeautifulSoup da Taglara Sekil Verme Ile Ilgilidir

Selamun aleykum,

Ben bir siteden bir veriyi cekmek istiyordum.Bu site de yazbel.Soyle bir kod yaziyorum.

import requests
from bs4 import BeautifulSoup

r = requests.get("https://forum.yazbel.com")
r = r.content
soup = BeautifulSoup(r,"html.parser")

for i in soup.find_all("a",{"itemprop":"item"}):
    print(i)
    print('----------------------------------------------')

Bu kodlari calistirdigimizda bize birtakim taglar veriyor.Ben bu taglardan uygun olanini kullanmak istiyorum.(yani “https://forum.yazbel.com” sitesindeki sorulara girmek icin sonu itemprop=item olan tagi almak istiyorum.Acaba bunu nasil yapabilirim?

Acaba soyle yapabilir miyim diye dusundum.

import requests
from bs4 import BeautifulSoup

r = requests.get("https://forum.yazbel.com")
r = r.content
soup = BeautifulSoup(r,"html.parser")

for i in soup.find_all("a",{"itemprop":"item"}):
    a = i.text
    a = a.lower()
    b = a.split()
    a = "-".join(b)
    print(a)
    print('----------------------------------------------')

Bu kodun verdigi herhangi bir ciktiyi kullanarak
google a
(https://forum.yazbel.com/pythonda-bir-programin-calusip-calismadigini-belirleyen-ifadeler){ornek olarak verdim bu linki} yazdim.“hay aksi sayfa bulunamadi veya gizli” sayfası veriyor.

https://forum.yazbel.com/pythonda-bir-programin-calusip-calismadigini-belirleyen-ifadeler
linkini
https://forum.yazbel.com/t/pythonda-bir-programin-calusip-calismadigini-belirleyen-ifadeler?source_topic_id=943
yaptigimda istedigim sonucu aliyorum.Acaba diger yonden(beautifulsoup yoluyla split(),join(),vb kullanarak degilde find_all yoluyla linkin
t/pythonda-bir-programin-calusip-calismadigini-belirleyen-ifadeler
bulumunu nasil elde ederim acaba?) nasil yapabilirim bu isi?

>>> from urlparse import urlparse
>>> adres = urlparse('https://forum.yazbel.com/t/pythonda-bir-programin-calusip-calismadigini-belirleyen-ifadeler?source_topic_id=943')
>>> adres.path
'/t/pythonda-bir-programin-calusip-calismadigini-belirleyen-ifadeler'
1 Beğeni

Siz beni yanlis anlamissiniz galiba.

Bu kodlari bir calistirin.Soyle bir sonuc cikar:

<a href="/t/beautifulsoup-da-taglara-sekil-verme-ile-ilgilidir/943" itemprop="item">
<span itemprop="name">BeautifulSoup da Taglara Sekil Verme Ile Ilgilidir</span>
</a>
-------------------------
<a href="/t/programci-olmak-isteyen-genc/941" itemprop="item">
<span itemprop="name">Programcı olmak isteyen genç :)</span>
</a>
-------------------------
<a href="/t/kivy-ile-yaptigim-yeni-uygulamam/938" itemprop="item">
<span itemprop="name">Kivy ile yaptığım yeni uygulamam</span>
</a>
-------------------------
<a href="/t/kafasi-karisik-bir-yazilimci-adayi-icin-yol-tavsiyesi/100" itemprop="item">
<span itemprop="name">Kafası karışık bir yazılımcı adayı için yol tavsiyesi</span>
</a>
-------------------------
<a href="/t/python-e-posta-adresi-kontrolu/931" itemprop="item">
<span itemprop="name">Python e posta adresi kontrolü</span>
</a>
-------------------------
<a href="/t/qpython-a-bs4-ve-requests-yuklenebilir-mi/926" itemprop="item">
<span itemprop="name">Qpython a bs4 ve requests yuklenebilir mi?</span>
</a>
-------------------------

bu sonucun devami da var ama ornek olsun diye cikan sonucun bir bolumunu paylastim.Mesela bu bolumden bir parca secelim.

<a href="/t/kivy-ile-yaptigim-yeni-uygulamam/938" itemprop="item">
<span itemprop="name">Kivy ile yaptığım yeni uygulamam</span>
</a>

Ben

/t/kivy-ile-yaptigim-yeni-uygulamam/938

bolumunu elde etmem icin ne yapmam gerekir?Aslinda ben bu sorunu baska bir sekilde cozdum fakat bunun find_all la nasil cozulecegini ogrenmek istiyorum.Bu arada cok tesekkurler.O cozum yolunu da paylasayim.

import requests
from bs4 import BeautifulSoup
url = "https://forum.yazbel.com"
r = requests.get(url)
r = r.content
soup = BeautifulSoup(r,"html.parser")
for i in soup.find_all("a",{"itemprop":"item"})
    a = i.text
    a = a.lower()
    b = a.split()
    a = "-".join(b)
    a = 't/' + a
    print(a)
    print('---------------------------------------------')

kodlarini calistirdigimda da istedigim sonucu alabiliyorum.

Sanırım burası ‘item’ olacak.

Etiketlerin içindeki metini mi almak istiyorsunuz. Örneğin:

import requests
from bs4 import BeautifulSoup

r = requests.get("https://forum.yazbel.com")
r = r.content
soup = BeautifulSoup(r,"html.parser")

bağlantılar = soup.find_all("a",{"itemprop":"item"})

for bağlantı in bağlantılar:
    print (bağlantı.span.text)
1 Beğeni

Cok kusura bakmayin name yerine item olacak dediginiz gibi.Yazim yanlisligi yapmisim.Gerekli duzenlemeleri yaptim.Tesekkur ederim.Kodlarinizi inceleyecegim.Çözümse cozum tiki atarim.

Kusura bakmayin,çok ugrastirdim fakat sizin kod benim istedigimi vermiyor.

etiketlerin icindeki metinin belli bir bolumunu almak istiyorum.Sizin kodlarin verdigi ciktiyi ben de bulabiliyorum.Kisaca ben

<a href="/t/python-e-posta-adresi-kontrolu/931" itemprop="item">
<span itemprop="name">Python e posta adresi kontrolü</span>
</a>

ciktisindaki

Python e posta adresi kontrolü

bolumunu istemiyorum.Ayni bolumdeki

/t/python-e-posta-adresi-kontrolu/931

parcasini istiyorum.Hatta onu da gec bu html parcasindaki

<a href="/t/python-e-posta-adresi-kontrolu/931" itemprop="item">

tagina erismem benim icin yeterli olacak.span etiketli taga ben de kolayca ulasiyorum dedigim gibi.Sorun ayni parcadaki hemen yukarida belirttigim
taga ulasmak.

Kisaca

<a href="/t/python-e-posta-adresi-kontrolu/931" itemprop="item">
<span itemprop="name">Python e posta adresi kontrolü</span>
</a>

html parcasinda

<a href="/t/python-e-posta-adresi-kontrolu/931" itemprop="item">

tagina ulasmak istiyorum.

<span itemprop="name">Python e posta adresi kontrolü</span>

tagina degil.

Merhabalar. BeautifulSoup’un resmi sitesindeki dokumantasyonda( https://www.crummy.com/software/BeautifulSoup/bs4/doc/) soyle bir sey buldum

    import requests
    import bs4
    from bs4 import BeautifulSoup

    r = requests.get("https://forum.yazbel.com")
    r = r.content

    soup = BeautifulSoup(r,"html.parser")

    for link in soup.find_all('a'):
        print(link.get('href'))

Belki isinize yarar

Tesekkur ederim @Hamid .Senin kodlarinda ufak bir degisiklik yaparak(degisiklik de denemez de) istedigim sonuca ulasiyorum.Soyle ki

import requests
from bs4 import BeautifulSoup

r =  requests.get("https://forum.yazbel.com")

r = r.content
soup = BeautifulSoup(r,"html.parser")
for i in soup.find_all('a',{"itemprop":"item"}):
   print(i.get('href'))

Bu soruma cevap veren herkesten allah razi olsun.Bana yeni bir sey ogrettiler.

Rica ederim.Yardim ede bildiysem ne mutlu bana.

1 Beğeni