抓取工具不断抓取相同的链接

时间:2018-06-22 22:04:16

标签: python python-3.x web-scraping

我用pythonBeautifulSoup编写了一个脚本,使用其分页按钮转到网站的next page(此按钮有一个链接)直到没有要爬网的新页面为止。我的脚本可以使用分页链接来抓取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

如果我希望采用任何硬编码方法,我本可以避免此类问题,但这不是我的意图。

1 个答案:

答案 0 :(得分:1)

只存储最后一个链接

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