Я столкнулся с одной проблемой, прежде чем, когда я очищаю несколько страниц с помощью Selenium, просто нажмите кнопку "Следующая страница" и используйте NoSuchElementException
чтобы остановить его.
Но URL, с которым я сталкиваюсь сейчас - это элемент, который всегда существует, на последней странице, если я нажимаю кнопку следующей страницы, он просто перезагружает текущую страницу.
Кто-нибудь может помочь решить, как перестать нажимать ту же кнопку?
items=driver.find_elements_by_class_name('item')
while True:
try:
#click next page
driver.find_element_by_link_text('下一页').click()
sleep(5)
#scrpae data here
items=driver.find_elements_by_class_name('item')
for i in range(0, len(items)):
results.append(items[i])
print(items[i])
except NoSuchElementException:
break
Для деталей страницы вы можете проверить картинку ниже
[Изменено]
Вы можете решить эту проблему, сопоставив URL текущей страницы и URL следующей страницы в ссылке на следующую страницу. если URL текущей страницы совпадает с URL в ссылке на следующую страницу, то это последняя страница. в противном случае продолжайте списывать.
У вас должна быть переменная, в которой вы храните URL текущей страницы, и когда вы нажимаете ссылку на следующую страницу по селену, вы получаете URL страницы и совпадаете с предыдущей.
Вот что я говорю:
url = "https://humkinar.com.pk/"
driver.get(url)
items=driver.find_elements_by_class_name('item')
current_page_url = ""
prev_page_url = url
while True:
try:
driver.find_element_by_link_text('下一页').click()
current_page_url = driver.current_url
if current_page_url != prev_page_url:
time.sleep(5)
items=driver.find_elements_by_class_name('item')
for i in range(0, len(items)):
results.append(items[i])
print(items[i])
prev_page_url = current_page_url
else:
break
except NoSuchElementException:
break
print driver.current_url
Как я вижу на картинке (я полагаю, что фотография, которой вы поделились, имеет последнюю страницу), проверьте для className == 'disable'
в <a class='disable'> <some text in chinese></a>
и break;
ОБНОВИТЬ:
items=driver.find_elements_by_class_name('item')
while True:
try:
#click next page
next = driver.find_element_by_link_text('下一页')
next.click()
sleep(5)
#scrpae data here
items=driver.find_elements_by_class_name('item')
for i in range(0, len(items)):
results.append(items[i])
print(items[i])
break;
if(next.getAttribute('class') == 'disable'){
throw new Exception()
}