Guest User

Untitled

a guest
May 28th, 2024
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. from selenium.webdriver.support.ui import WebDriverWait
  4. from selenium.webdriver.support import expected_conditions as EC
  5. from bs4 import BeautifulSoup
  6. import requests
  7.  
  8. # Ustawienia dla WebDrivera Chrome
  9. options = webdriver.ChromeOptions()
  10. options.binary_location = '' # Możesz też zostawić to puste, jeśli chromedriver znajduje się w PATH
  11.  
  12. # Inicjalizacja WebDrivera Chrome
  13. driver = webdriver.Chrome(options=options)
  14.  
  15. # Otwarcie strony Google
  16. google_url = 'https://www.google.com/'
  17. driver.get(google_url)
  18.  
  19. # Zamknięcie okna consent cookies, jeśli się pojawi
  20. try:
  21. WebDriverWait(driver, 3).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#L2AGLb'))).click()
  22. except TimeoutException:
  23. print("Okno consent cookies nie pojawiło się lub nie można było je zamknąć.")
  24.  
  25. # Wprowadzenie frazy wyszukiwania i przejście do wyników
  26. search_box = driver.find_element(By.NAME, 'q')
  27. search_box.send_keys('nike') # Poprawione wpisanie frazy
  28. search_box.submit()
  29.  
  30. # Poczekaj na reklamy w bloku cu-container przez 10 sekund
  31. try:
  32. WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, '.cu-container, .top-pla-group-inner')))
  33. except TimeoutException:
  34. print("Nie znaleziono reklam na stronie.")
  35. driver.quit()
  36. exit()
  37.  
  38. # Znajdź reklamy
  39. ads_text = driver.find_elements(By.CSS_SELECTOR, '.ptJHdc')
  40. ads_pla = driver.find_elements(By.CSS_SELECTOR, '.mnr-c.pla-unit')
  41.  
  42. # Jeśli znaleziono reklamy, wyświetl ich tytuły i przejdź do linków docelowych
  43. if ads_text or ads_pla:
  44. print("Znaleziono reklamy na stronie.")
  45.  
  46. for index, ad in enumerate(ads_text):
  47. try:
  48. title = ad.find_element(By.CSS_SELECTOR, '.jOmXmb.SwlyWb').text
  49. print(f"Tytuł reklamy {index + 1}: {title}")
  50.  
  51. # Pobierz link docelowy reklamy bez klikania
  52. ad_link_element = ad.find_element(By.TAG_NAME, 'a')
  53. ad_link = ad_link_element.get_attribute('href')
  54. print(f"Link docelowy reklamy {index + 1}: {ad_link}")
  55.  
  56. # Śledzenie przekierowania do bezpośredniego URL
  57. if ad_link and 'aclk' in ad_link:
  58. response = requests.get(ad_link, allow_redirects=True)
  59. final_url = response.url
  60. print(f"Bezpośredni link docelowy {index + 1}: {final_url}")
  61. else:
  62. print(f"Nie znaleziono bezpośredniego linku docelowego {index + 1}.")
  63.  
  64. # Wyodrębnij informacje o reklamodawcy bez przechodzenia do linku
  65. soup = BeautifulSoup(ad.get_attribute('innerHTML'), 'html.parser')
  66. advertiser_info = soup.find('span', {'class': 'x2VHCd OSrXXb eDr7tb'})
  67. if advertiser_info:
  68. advertiser = advertiser_info.get_text().strip()
  69. print(f"Reklamodawca {index + 1}: {advertiser}")
  70. else:
  71. print(f"Nie znaleziono informacji o reklamodawcy {index + 1}.")
  72.  
  73. except Exception as e:
  74. print(f"Błąd podczas przetwarzania reklamy {index + 1}: {str(e)}")
  75.  
  76. for index, ad in enumerate(ads_pla):
  77. try:
  78. title = ad.get_attribute('data-dtld')
  79. print(f"Tytuł reklamy PLA {index + 1}: {title}")
  80.  
  81. # Pobierz link docelowy reklamy bez klikania
  82. ad_link_element = ad.find_element(By.TAG_NAME, 'a')
  83. ad_link = ad_link_element.get_attribute('href')
  84. print(f"Link docelowy reklamy PLA {index + 1}: {ad_link}")
  85.  
  86. # Śledzenie przekierowania do bezpośredniego URL
  87. if ad_link and 'aclk' in ad_link:
  88. response = requests.get(ad_link, allow_redirects=True)
  89. final_url = response.url
  90. print(f"Bezpośredni link docelowy PLA {index + 1}: {final_url}")
  91. else:
  92. print(f"Nie znaleziono bezpośredniego linku docelowego PLA {index + 1}.")
  93.  
  94. # PLA reklamy mogą mieć inne informacje o reklamodawcy
  95. print(f"Reklamodawca PLA {index + 1}: Brak dostępnej informacji")
  96.  
  97. except Exception as e:
  98. print(f"Błąd podczas przetwarzania reklamy PLA {index + 1}: {str(e)}")
  99.  
  100. else:
  101. print("Nie znaleziono reklam na stronie.")
  102.  
  103. # Zamykanie przeglądarki
  104. driver.quit()
  105.  
Advertisement
Add Comment
Please, Sign In to add comment