BS4 ve requests ile forumdaki konularin icerigini cekmek

Merhaba.ben pythonun requests moduluyle forumdaki konu basliklarini ceke biliyorum.ama ayni zamanda konularin iceriginide cekmek istiyorum.ama bunu nasil yapacagimi bilmiyorum.aslinda baska web sitelerinde boyle bir seyi kolayca yapa bilirim ama bu forumda konuya girdigimizde url kisminda /t/konunun-slugu/id/rakam oluyor.t harfi ve konunun slugu sorun degil ama ilgili konunun idsini nasil cekecegimi bilmiyorum(konsolda <a> taginin icinde data-topic-id diye bir sey vardi ama onu cekemedim).yardimci olursaniz sevinirim.

Aslinda en son gonderinin idsini kendimiz verdikden sonra basit bir matematik ile diger gonderilerin idsini sirayla bulmak olur.ama gonderilerin sirasi degisdigi icin calismiyacaktir.yok buda olmadi.

Merhaba, hangi forum sitesi (yazbel de data-topic-id göremedim başka bir site mi?) adresi yazabilirsen bakıp yardımcı olmaya çalışayım (aslında benimde çok bilgim yok ama yardımım olursa bakıp yazarım)

yazbel forumu

konu basliklarina sag tiklayin incele deyin.<a> etiketinin icinde data-topic-id diye bir sey oldugunu gormelisiniz.

Ok konu içeriğinde aramıştım, anasayfadan bakınca gördüm, şimdi bakınıyorum birşeyler yapabilirsem ileteceğim.

şöyle birşey yazdım ama işine yarar umarım, BeautifulSoup ile önce anasayfada ki ‘href’ leri çekiyor, sonra içlerinde konu linklerini ayıklayıp tekrar BeautifulSoupla konu içeriklerini çekiyor. Sadece istediğin konu içeriğini çekebilmek için sonuna sen birşeyler eklersin.

Tabii bu arada bu benim bilgi seviyemle ulaşabildiğim bir çözüm, istediğin bu mu bilmiyorum umarım işine yarar ama eminim daha işlevsel daha temiz yolları da vardır ve forumdan diğer arkadaşlar görüp yanıtlarlar umarım.
Selamlar

import requests
from bs4 import BeautifulSoup

url = "https://forum.yazbel.com/"

r = requests.get(url)

soup = BeautifulSoup(r.content, 'html.parser')

allLinks = []

links = soup.find_all('a')

for inLink in links:
  allLinks.append(inLink.get('href'))

for url2 in allLinks:
  if "https://forum.yazbel.com/t/" in url2:
    print(url2)
    r2 = requests.get(url2)
    soup2 = BeautifulSoup(r2.content, 'html.parser')
    links2 = soup2.find_all('p')
    print(links2)
1 Beğeni

yaramaz olurmu.tesekkur ederim.bu benim icin cozum oldu.

1 Beğeni

Tam denk geldi aslında bende requests ve bs4 ile diğer gönderide bahsettiğim siteden veri çekme işi ile uğraşıyordum, senin sorun benim içinde güzel pratik yapma imkanı oldu :slight_smile:

Kolay gelsin.

1 Beğeni

Discourse forumlarının (Yazbel bunlardan biri oluyor) API’yı da var, kullanılabilir.

3 Beğeni

Tesekkurler hocam.bunu bilmiyordum.oyrendim sayenizde.