на самом деле, когда он переходит по первой ссылке, он возвращается на главную страницу, а не переходит на вторую итерацию, потому что блоки - это отложенная загрузка
Код: Выделить всё
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, NoSuchElementException
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from bs4 import BeautifulSoup
import requests
import urllib
import time
import pandas
import re
driver_service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=driver_service)
driver.get("https://acma-automechanika-newdelhi.in.messefrankfurt.com/newdelhi/en/exhibitor-search.html")
# paste url that you want to scrape
wait = WebDriverWait(driver, 10)
# Close popup if present
try:
close_button = driver.execute_script("arguments[0].click()", button)
close_button.click()
except:
pass
# List to store data
siteData = []
# Loop over exhibitors
for i in range(1, 400):
try:
# Wait for the exhibitor container to be present
listing = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'ex-exhibitor-search-results')))
# Find all exhibitor links within the container
# Find all exhibitor links within the container
lists = listing.find_elements(By.XPATH, '//div[@class="ex-exhibitor-search-results"]/div/div/div/div/div[' + str(i) + ']/a[contains(@class, "a-link--no-focus")]')
#it go to the first anchor link and click the link and append all the entries in the sheet and back to return the main page and after that it not to the another anchor link
except:
break
for listss in lists:
listss.click()
time.sleep(20)
try:
driver.execute_script("arguments[0].click()", button)
except:
pass
try:
name = driver.find_element(By.CLASS_NAME,'ex-contact-box__address-field-name').text
except:
pass
try:
street = driver.find_element(By.CLASS_NAME,'ex-contact-box__address-field-street').text
except:
pass
try:
zip = driver.find_element(By.CLASS_NAME,'ex-contact-box__address-field-zip').text
except:
pass
try:
city = driver.find_element(By.CLASS_NAME,'ex-contact-box__address-field-city').text
except:
pass
try:
number = driver.find_element(By.CLASS_NAME,'ex-contact-box__address-field-tel-number').text
except:
pass
try:
fax = driver.find_element(By.CLASS_NAME,'ex-contact-box__address-field-fax-number').text
except:
pass
try:
contact = driver.find_element(By.CLASS_NAME, 'ex-contact-box__contact-btn').get_attribute('href')
except:
pass
try:
website = driver.find_element(By.CLASS_NAME, 'icon.icon-news-before.ex-contact-box__website-link').get_attribute('href')
except:
pass
time.sleep(2)
driver.switch_to.window(driver.window_handles[0])
driver.back()
siteData.append({"name":name, "address":street, "address1":zip, "address2":city, "Phone":number, "Fax":fax, "Website":website})
df = pandas.DataFrame(siteData)
df.to_csv("C:/Users/User/Documents/acma12.csv")
driver.quit()
Подробнее здесь: https://stackoverflow.com/questions/783 ... nk-and-app