Скребок продолжает сканировать идентичные ссылки

1

Я написал сценарий в python в сочетании с BeautifulSoup чтобы перейти к next page веб-сайта, используя кнопку pagination (есть ссылка, связанная с этой кнопкой), пока не будет новой страницы для сканирования. Мой скрипт может сканировать next pages используя ссылку для разбивки на страницы. Однако проблема заключается в том, что разбитые на страницы ссылки никогда не заканчиваются, поскольку кнопка (подключенная к ссылке следующей страницы) не серая, поэтому я попадаю в бесконечный цикл. Как я могу избавиться от этого таким образом, чтобы скрипт проверял, я ли я соскабливаю две идентичные ссылки, и как только он найдет один, он сломается.

Это мой сценарий до сих пор:

import requests
from bs4 import BeautifulSoup

def get_content(link):
    while True:
        res = requests.get(link)
        soup = BeautifulSoup(res.text, 'lxml')

        #some code here to do the rest of the activity

        nextpage = soup.select_one(".roundright a")
        if not nextpage:break   #The loop doesn't break because the next page button never grayes out
        link = nextpage.get("href")
        print(link)

if __name__ == '__main__':
    url = "http://www.viprealestateug.com/action/rentals/"
    get_content(url)

Полученные результаты:

http://www.viprealestateug.com/action/rentals/page/2/
http://www.viprealestateug.com/action/rentals/page/3/
http://www.viprealestateug.com/action/rentals/page/4/
http://www.viprealestateug.com/action/rentals/page/4/
http://www.viprealestateug.com/action/rentals/page/4/
and so on

Я мог бы избежать таких проблем, если бы хотел пойти на любой жесткий подход, но это не мое намерение.

Теги:
python-3.x
web-scraping

1 ответ

1
Лучший ответ

просто сохраните последнюю ссылку

    last_link = link
    link = nextpage.get("href")
    if link == last_link: break
    print(link)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню