Python 分页循环

标签 python for-loop pagination beautifulsoup

我正在做一些简单的网络抓取,需要找到一种更好的方法来循环访问目标站点上的分页。我能做到这一点的唯一方法是编写 10 个以上的“for 循环”来让它工作。 基本上我在 url 中寻找“下一个”图标,如果它存在,我需要获取图标图像的父链接并将其附加到 url,转到新的更新 url,并搜索相同的图标并重复直到我到达最后一页(图标将消失)。 如果不对一堆 for 循环进行硬编码,我该如何执行此操作?

        url = "http://www.somewebsite.com/"
        r = requests.get(wurl)
        soup = BeautifulSoup(r.text, "lxml")

        for img in soup.findAll("img"):
            if "/Next_Icon" in img["src"]:
                link = img.find_parent("a", href=True)
                extLink = (link["href"])
                url = "http://www.somewebsite.com/" + extLink

最佳答案

url_stack = ["http://www.somewebsite.com/"]

while url_stack:
    wurl = url_stack.pop()
    r = requests.get(wurl)
    soup = BeautifulSoup(r.text, "lxml")

    for img in soup.findAll("img"):
        if "/Next_Icon" in img["src"]:
            link = img.find_parent("a", href=True)
            extLink = (link["href"])
            url = "http://www.somewebsite.com/" + extLink
            url_stack.append(url)

你应该使用列表来存储所有的 url

关于Python 分页循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43025020/

相关文章:

multithreading - 面包店算法(死锁?)

java - for 循环中 int 的值不变

c# - 分页以返回总计数和总页数

java - GraphQL:如何使用 graphQL-java 实现分页?

python - Django URLconf : How to use captured params in include's RedirectView?

c++ - boost:python 传递一个指向指针的指针作为参数

python - 为什么Flask teardown_request在debug模式下获取不到异常对象(总是None,debug=True时正常)?

c# - 从 C# 运行 Python 函数

javascript - 在 Angular JS 中第一次拒绝 promise 时停止/退出循环

android - 如何使用 StaggeredGridLayoutManager 在 recyclerview 中实现无限滚动(分页)