Если вы используете Selenium
, тогда используйте Selenium
, чтобы найти <a class="pagenav">
или <a title="next page">
и .click()
, чтобы загрузить следующую страницу, и вам не нужно получать href
для этого.
import selenium.webdriver
url = 'https://associatedrealtorsaruba.com/index.php?option=com_ezrealty&Itemid=11&task=results&cnid=0&custom7=&custom8=&parking=&type=0&cid=0&stid=0&locid=0&minprice=&maxprice=&minbed=&maxbed=&min_squarefeet=&max_squarefeet=&bathrooms=&sold=0&lug=0&featured=0&custom4=&custom5=&custom6=&postcode=&radius=&direction=DEFAULT&submit=Search'
driver = selenium.webdriver.Firefox()
driver.get(url)
# find link to next page
next_page = driver.find_element_by_xpath('//a[@title="next page"]')
# click link to load next page
next_page.click()
КСТАТИ: Если вы вручную загрузите страницы 1, 2 и 3 и сравните их URL в браузере, вы увидите единственную разницу в URL
for page 1: &limitstart=0
for page 2: &limitstart=20
for page 3: &limitstart=40
и это способ загрузки следующей страницы без получения href
- вам нужно получить исходный URL и добавить &limitstart=
с правильным значением для загрузки другой страницы.
Если вы хотите чтобы отобразить 50 элементов на странице, вам нужно использовать &limit=50
, а затем &limitstart
придется использовать значения 0, 50, 100 и т. д. c.
РЕДАКТИРОВАТЬ:
с запросами
import requests
from bs4 import BeautifulSoup as BS
url = 'https://associatedrealtorsaruba.com/index.php?option=com_ezrealty&Itemid=11&task=results&cnid=0&custom7=&custom8=&parking=&type=0&cid=0&stid=0&locid=0&minprice=&maxprice=&minbed=&maxbed=&min_squarefeet=&max_squarefeet=&bathrooms=&sold=0&lug=0&featured=0&custom4=&custom5=&custom6=&postcode=&radius=&direction=DEFAULT&submit=Search'
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0', # need full UA
}
for x in (0, 20, 40):
r = requests.get(url + '&limitstart={}'.format(x), headers=headers)
print('\n---', x, '---\n')
soup = BS(r.text, 'html.parser')
all_items = soup.find_all('span', {'class': 'h3'})
for item in all_items:
print(item.get_text(strip=True))
с селеном
import selenium.webdriver
url = 'https://associatedrealtorsaruba.com/index.php?option=com_ezrealty&Itemid=11&task=results&cnid=0&custom7=&custom8=&parking=&type=0&cid=0&stid=0&locid=0&minprice=&maxprice=&minbed=&maxbed=&min_squarefeet=&max_squarefeet=&bathrooms=&sold=0&lug=0&featured=0&custom4=&custom5=&custom6=&postcode=&radius=&direction=DEFAULT&submit=Search'
driver = selenium.webdriver.Firefox()
driver.get(url)
while True:
all_items = driver.find_elements_by_xpath('//span[@class="h3"]')
for item in all_items:
print(item.text)
try:
# find link to next page
all_items = driver.find_element_by_xpath('//a[@title="next page"]')
# click link to load next page
all_items.click()
except Exception as ex:
print('ex:', ex)
break