Href Çekme

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Seçkin Üye
Katılım
26 Ocak 2016
Mesajlar
400
Çözümler
1
Tepki puanı
42
Ödüller
9
10 HİZMET YILI
Href değerlerini yazdıramıyorum , nasıl bir düzeltme yapmam gerekiyor . Yapay zeka araçlarına sordum .






Kod:
from bs4 import BeautifulSoup
import requests

def data():
    n = 5
    dosya_adı = "datas.txt"
    with open(dosya_adı, "w") as dosya:
        while n < 45:
            url = f"https://www.vesselfinder.com/vessels?page={n}&minLength=100&maxLength=150&type=3&sort=2&dir=2"
            dosya.write(url + "\n")
            n += 1

def process():
    dosya_adı = "datas.txt"
    with open(dosya_adı, "r") as dosya:
        satirlar = dosya.readlines()

        for url in satirlar:
            response = requests.get(url.strip())
            soup = BeautifulSoup(response.content, "html.parser")
            for ship in soup.find_all(class_="ship-link"):
                print(ship.get('href'))

data()
process()
 
Süper Üye
Katılım
23 Nis 2019
Mesajlar
981
Çözümler
2
Tepki puanı
79
Ödüller
6
7 HİZMET YILI
Href değerlerini yazdıramıyorum , nasıl bir düzeltme yapmam gerekiyor . Yapay zeka araçlarına sordum .






Kod:
from bs4 import BeautifulSoup
import requests

def data():
    n = 5
    dosya_adı = "datas.txt"
    with open(dosya_adı, "w") as dosya:
        while n < 45:
            url = f"https://www.vesselfinder.com/vessels?page={n}&minLength=100&maxLength=150&type=3&sort=2&dir=2"
            dosya.write(url + "\n")
            n += 1

def process():
    dosya_adı = "datas.txt"
    with open(dosya_adı, "r") as dosya:
        satirlar = dosya.readlines()

        for url in satirlar:
            response = requests.get(url.strip())
            soup = BeautifulSoup(response.content, "html.parser")
            for ship in soup.find_all(class_="ship-link"):
                print(ship.get('href'))

data()
process()
Görünüşe göre, kodunuz href değerlerini doğru şekilde yazdırmıyor. İncelediğim kadarıyla, data() fonksiyonu URL'leri datas.txt adlı bir dosyaya doğru şekilde yazıyor gibi görünüyor. Ancak, process() fonksiyonunda href değerlerini yazdırmak için bir düzeltme yapmanız gerekiyor.

Aşağıda, process() fonksiyonunu düzenlemek için bir örnek verdim:
def process():
dosya_adı = "datas.txt"
with open(dosya_adı, "r") as dosya:
satirlar = dosya.readlines()

for url in satirlar:
response = requests.get(url.strip())
soup = BeautifulSoup(response.content, "html.parser")
ship_links = soup.find_all(class_="ship-link")
for ship in ship_links:
href = ship.get('href')
print(href)

Bu düzenlemede, soup.find_all(class_="ship-link") ile bulunan tüm ship-link sınıfına sahip öğeleri ship_links listesine atıyoruz. Ardından, ship_links üzerinde döngüye girerek her öğenin href değerini alıyoruz ve print fonksiyonuyla yazdırıyoruz.

Bu düzeltmeleri uyguladıktan sonra process() fonksiyonu, her URL için href değerlerini doğru şekilde yazdırmalıdır.
 
Seçkin Üye
Katılım
26 Ocak 2016
Mesajlar
400
Çözümler
1
Tepki puanı
42
Ödüller
9
10 HİZMET YILI
Görünüşe göre, kodunuz href değerlerini doğru şekilde yazdırmıyor. İncelediğim kadarıyla, data() fonksiyonu URL'leri datas.txt adlı bir dosyaya doğru şekilde yazıyor gibi görünüyor. Ancak, process() fonksiyonunda href değerlerini yazdırmak için bir düzeltme yapmanız gerekiyor.

Aşağıda, process() fonksiyonunu düzenlemek için bir örnek verdim:
def process():
dosya_adı = "datas.txt"
with open(dosya_adı, "r") as dosya:
satirlar = dosya.readlines()

for url in satirlar:
response = requests.get(url.strip())
soup = BeautifulSoup(response.content, "html.parser")
ship_links = soup.find_all(class_="ship-link")
for ship in ship_links:
href = ship.get('href')
print(href)

Bu düzenlemede, soup.find_all(class_="ship-link") ile bulunan tüm ship-link sınıfına sahip öğeleri ship_links listesine atıyoruz. Ardından, ship_links üzerinde döngüye girerek her öğenin href değerini alıyoruz ve print fonksiyonuyla yazdırıyoruz.

Bu düzeltmeleri uyguladıktan sonra process() fonksiyonu, her URL için href değerlerini doğru şekilde yazdırmalıdır.
sanırım site tarafından engelleniyor çekme işlemi . 403 hatası aldım. Selenium ile denesem aynı sonucu alır mıyım bilemedim . Bir deneyeyim .
 
Son düzenleme:
Seçkin Üye
Katılım
26 Ocak 2016
Mesajlar
400
Çözümler
1
Tepki puanı
42
Ödüller
9
10 HİZMET YILI
denemende fayda var. kodum işe yaramadıysa ondan kaynaklı olabilir.
Şöyle bir güncelleme yaptım , sonucunda hata 403.

Kod:
def process():
    dosya_adı = "datas.txt"
    with open(dosya_adı, "r") as dosya:
        satirlar = dosya.readlines()

        for url in satirlar:
            response = requests.get(url.strip())
            if response.status_code == 200:
                soup = BeautifulSoup(response.content, "html.parser")
                ship_links = soup.find_all(class_="ship-link")
                for ship in ship_links:
                    href = ship.get("href")
                    print(href)
            else:
                print(f"Hata: {response.status_code} - İstek başarısız.")
 
Süper Üye
Katılım
23 Nis 2019
Mesajlar
981
Çözümler
2
Tepki puanı
79
Ödüller
6
7 HİZMET YILI
Şöyle bir güncelleme yaptım , sonucunda hata 403.

Kod:
def process():
    dosya_adı = "datas.txt"
    with open(dosya_adı, "r") as dosya:
        satirlar = dosya.readlines()

        for url in satirlar:
            response = requests.get(url.strip())
            if response.status_code == 200:
                soup = BeautifulSoup(response.content, "html.parser")
                ship_links = soup.find_all(class_="ship-link")
                for ship in ship_links:
                    href = ship.get("href")
                    print(href)
            else:
                print(f"Hata: {response.status_code} - İstek başarısız.")
site bağlantını engelliyor. requests kütüphanesinde, headers parametresini kullanarak istek başlığına farklı bir kullanıcı ajanı ekleyebilirsiniz.
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
}

response = requests.get(url.strip(), headers=headers)
koduna bunu ekleyebilirmisin
 
Seçkin Üye
Katılım
26 Ocak 2016
Mesajlar
400
Çözümler
1
Tepki puanı
42
Ödüller
9
10 HİZMET YILI
site bağlantını engelliyor. requests kütüphanesinde, headers parametresini kullanarak istek başlığına farklı bir kullanıcı ajanı ekleyebilirsiniz.
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
}

response = requests.get(url.strip(), headers=headers)
koduna bunu ekleyebilirmisin
Hocam işe yaradı , ne değişti de site bizi engellemeyi bıraktı. Sanırım bizi tanımladığımız kişi olarak gördü , tanımlama yapmadan önce bizi ne olarak görüyordu
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst