BeautifulSoup da Taglara Sekil Verme Ile Ilgilidir


#1

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?


#2

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.


#3

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?


#4
>>> 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'

#5

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.


#6

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)

#7

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


#8

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.


#9

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.


#10

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


#11

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.


#12

Rica ederim.Yardim ede bildiysem ne mutlu bana.