Çözüldü Python Link kontrolü nasıl yapılır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Arya13

Yoctopat
Katılım
26 Eylül 2023
Mesajlar
5
Daha fazla  
Cinsiyet
Erkek
Merhaba arkadaşlar,

Ben acemiyim ancak basit kontrolleri yapabiliyorum. Örneğin bir sitede kullanıcı adı kontrol yapacağım zaman başlıkta not found yazıyorsa kırmızı, yazmıyorsa yeşil çıktı ver şeklinde yazıyorum. Fakat devtools kısmına hakim değilim.
Sayfa kaynağına göre de arama yaptırabiliyorum ancak burada olan kullanıcı ile olmayan kullanıcının sayfa kaynak kodları tamamen aynı.

Olan kullanıcı;

Olmayan kullanıcı;

Burada ben devtools kısmından bir şey almam gerektiğini biliyorum ama ne olduğunu bilmiyorum :)

Rica etsem benim için bu kodu bu siteye uygun şekilde düzenleyebilir misiniz? Dosya içinde alt alta sıralanmış linklerde olan kullanıcı ve olmayan kullanıcı olarak çıktı vermesi gerekli.

Python:
import time

from selenium import webdriver

from selenium.webdriver.chrome.options import Options



# Chrome Options ayarları

chrome_options = Options()

chrome_options.add_argument("--headless")  # Görünmez (headless) modda çalıştırma

chrome_options.add_argument("--incognito")  # Misafir sekmesi (Incognito Mode)



# ChromeDriver'ı başlat

driver = webdriver.Chrome(options=chrome_options)



# Dosya içindeki linklere sıra ile tıklayarak site başlığını kontrol et

def check_links(filename):

    with open(filename, "r", encoding="utf-8") as f:

        for url in f.readlines():

            url = url.strip()  # Boşlukları kaldır

            driver.get(url)

            time.sleep(1)  # Sayfanın yüklenmesini beklemek için uygun bir süre ayarlayın

            page_title = driver.title



            if "Users not found" in page_title:

                print("\033[31m" + f"{url} - Red")

            else:

                print("\033[32m" + f"{url} - Green")



# Dosya adını belirtin ve işlevi çağırın

check_links("link.txt")



# Tarayıcıyı kapat

driver.quit()
 
Çözüm
Site headless mode kullanmaya izin vermediği için elementleri bulamıyormuş. user-agent ayarı ekledim. Şu an çalışması lazım, tekrar dener misiniz?
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException

chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--incognito")
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36'
chrome_options.add_argument(f'user-agent={user_agent}')
driver = webdriver.Chrome(options=chrome_options)

URL = "https://www.starshares.xyz/"

with open("list.txt", "r") as f:
    for username in f.readlines():
        username = username.strip()
        driver.get(URL + username)
        try:
           WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.XPATH, "/html/body/app-root/app-profile/app-header/nav[1]")))
           driver.find_element(By.XPATH, "/html/body/app-root/app-profile/app-pull-refresh/div[2]/h2")
        except NoSuchElementException:
            print("\033[32m" + f"{username} - Green")
        else:
            print("\033[31m" + f"{username} - Red")

driver.quit()
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException

chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--incognito")
driver = webdriver.Chrome(options=chrome_options)

URL = "https://www.starshares.xyz/"

with open("list.txt", "r") as f:
    for username in f.readlines():
        username = username.strip()
        driver.get(URL + username)
        try:
           WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.XPATH, "/html/body/app-root/app-profile/app-header/nav[1]")))
           driver.find_element(By.XPATH, "/html/body/app-root/app-profile/app-pull-refresh/div[2]/h2")
        except NoSuchElementException:
            print("\033[32m" + f"{username} - Green")
        else:
            print("\033[31m" + f"{username} - Red")

driver.quit()

Sayfa yüklendikten sonra User not found başlığını aratıyoruz. Bulunamaz ise hata veriyor, buradan kullanıcının var olduğunu anlıyoruz. Hata vermez ise kullanıcı yok demek oluyor.

list.txt içerisine kullanıcı adlarını yazdım alt alta. Buna da dikkat edin.
Kod:
sellmanft
asfa
 
Son düzenleme:
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException

chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--incognito")
driver = webdriver.Chrome(options=chrome_options)

URL = "https://www.starshares.xyz/"

with open("list.txt", "r") as f:
    for username in f.readlines():
        username = username.strip()
        driver.get(URL + username)
        try:
           WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.XPATH, "/html/body/app-root/app-profile/app-header/nav[1]")))
           driver.find_element(By.XPATH, "/html/body/app-root/app-profile/app-pull-refresh/div[2]/h2")
        except NoSuchElementException:
            print("\033[32m" + f"{username} - Green")
        else:
            print("\033[31m" + f"{username} - Red")

driver.quit()

Sayfa yüklendikten sonra User not found başlığını aratıyoruz. Bulunamaz ise hata veriyor, buradan kullanıcının var olduğunu anlıyoruz. Hata vermez ise kullanıcı yok demek oluyor.

list.txt içerisine kullanıcı adlarını yazdım alt alta. Buna da dikkat edin.
Kod:
sellmanft
asfa
Teşekkür ederim hocam ancak şöyle hata verdi;

Traceback (most recent call last):
File "starshares.py", line 20, in <module>
WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.XPATH, "/html/body/app-root/app-profile/app-header/nav[1]")))
File "C:\Users\SAMSUNG\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\support\wait.py", line 95, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
Stacktrace:
GetHandleVerifier [0x00DCCEB3+45171]
(No symbol) [0x00D59101]
(No symbol) [0x00C4BE1D]
(No symbol) [0x00C7ED40]
(No symbol) [0x00C7F20B]
(No symbol) [0x00CAF692]
(No symbol) [0x00C9B094]
(No symbol) [0x00CADCFA]
(No symbol) [0x00C9AE46]
(No symbol) [0x00C7675E]
(No symbol) [0x00C778FD]
GetHandleVerifier [0x010854B9+2897529]
GetHandleVerifier [0x010CDC6B+3194411]
GetHandleVerifier [0x010C7A41+3169281]
GetHandleVerifier [0x00E56130+606960]
(No symbol) [0x00D62E7C]
(No symbol) [0x00D5F008]
(No symbol) [0x00D5F12F]
(No symbol) [0x00D51827]
BaseThreadInitThunk [0x75ABFA29+25]
RtlGetAppContainerNamedObjectPath [0x771A7A9E+286]
RtlGetAppContainerNamedObjectPath [0x771A7A6E+238]
 
Site 3 saniye içerisinde yüklenmemiş. İnternetinizle alakalı olabilir mi? Yüklenme süresini arttırmayı deneyebilirsiniz. Bende hatasız çalışıyor.
 
Son düzenleme:
Son durum nedir?
Maalesef aynı hocam. İnternetim güzel ve bu siteye 1 saniyede giriyorum. Ayrıca başka kodlarda bu sorunu yaşamıyorum ama bunda timeout sorunu var anlamadım. 30 yapıyorum yine aynı çıktı veriyor.

Traceback (most recent call last):
File "starshares.py", line 20, in <module>
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH, "/html/body/app-root/app-profile/app-header/nav[1]")))
File "C:\Users\SAMSUNG\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\support\wait.py", line 95, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
Stacktrace:
GetHandleVerifier [0x0054CEB3+45171]
(No symbol) [0x004D9101]
(No symbol) [0x003CBE1D]
(No symbol) [0x003FED40]
(No symbol) [0x003FF20B]
(No symbol) [0x0042F692]
(No symbol) [0x0041B094]
(No symbol) [0x0042DCFA]
(No symbol) [0x0041AE46]
(No symbol) [0x003F675E]
(No symbol) [0x003F78FD]
GetHandleVerifier [0x008054B9+2897529]
GetHandleVerifier [0x0084DC6B+3194411]
GetHandleVerifier [0x00847A41+3169281]
GetHandleVerifier [0x005D6130+606960]
(No symbol) [0x004E2E7C]
(No symbol) [0x004DF008]
(No symbol) [0x004DF12F]
(No symbol) [0x004D1827]
BaseThreadInitThunk [0x754BFA29+25]
RtlGetAppContainerNamedObjectPath [0x77297A9E+286]
RtlGetAppContainerNamedObjectPath [0x77297A6E+238]
 
Site headless mode kullanmaya izin vermediği için elementleri bulamıyormuş. user-agent ayarı ekledim. Şu an çalışması lazım, tekrar dener misiniz?
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException

chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--incognito")
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36'
chrome_options.add_argument(f'user-agent={user_agent}')
driver = webdriver.Chrome(options=chrome_options)

URL = "https://www.starshares.xyz/"

with open("list.txt", "r") as f:
    for username in f.readlines():
        username = username.strip()
        driver.get(URL + username)
        try:
           WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.XPATH, "/html/body/app-root/app-profile/app-header/nav[1]")))
           driver.find_element(By.XPATH, "/html/body/app-root/app-profile/app-pull-refresh/div[2]/h2")
        except NoSuchElementException:
            print("\033[32m" + f"{username} - Green")
        else:
            print("\033[31m" + f"{username} - Red")

driver.quit()
 
Çözüm
Site headless mode kullanmaya izin vermediği için elementleri bulamıyormuş. user-agent ayarı ekledim. Şu an çalışması lazım, tekrar dener misiniz?
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException

chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--incognito")
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36'
chrome_options.add_argument(f'user-agent={user_agent}')
driver = webdriver.Chrome(options=chrome_options)

URL = "https://www.starshares.xyz/"

with open("list.txt", "r") as f:
    for username in f.readlines():
        username = username.strip()
        driver.get(URL + username)
        try:
           WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.XPATH, "/html/body/app-root/app-profile/app-header/nav[1]")))
           driver.find_element(By.XPATH, "/html/body/app-root/app-profile/app-pull-refresh/div[2]/h2")
        except NoSuchElementException:
            print("\033[32m" + f"{username} - Green")
        else:
            print("\033[31m" + f"{username} - Red")

driver.quit()
Hocam harikasınız.
Yeni yapacağım sitelerde de bu verdiğinizi değiştire değiştire kullanırım.
Çok teşekkürler, Allah razı olsun.
 

Technopat Haberler

Yeni konular

Geri
Yukarı