You need to enable JavaScript to run this app. Recursive Web Scraping Pagination 爬取房产文章分页问题技术咨询
优惠活动
大模型
产品
解决方案
定价
更多

Recursive Web Scraping Pagination 爬取房产文章分页问题技术咨询

问题根因排查
  • 分页逻辑严重缺失:原代码仅能处理最多2页内容,没有设计循环遍历所有分页的逻辑,只要分类超过2页,后续页面数据会完全丢失
  • 第一页内容被遗漏:你在代码中找到下一页链接后直接跳转至第二页爬取,完全没有采集第一页的文章数据,只有无分页的分类才会采集第一页内容
  • 选择器语法错误:代码中link[rel="next"]使用了HTML转义字符",Python代码中直接用单引号包裹属性值即可,该错误会导致部分场景下无法识别下一页链接
  • 存在无效重复请求:相同URL多次发起请求,浪费资源还可能触发站点反爬
修正后可实现全分页采集的代码
from requests_html import HTMLSession


def tag_words_links(url):
    global _session
    _request = _session.get(url)
    tags = _request.html.find('a.tag-cloud-link')
    links = []
    for link in tags:
        links.append({
             'Tags': link.find('a', first=True).text,
             'Links': link.find('a', first=True).attrs['href']
         })
    return links

def parse_tag_links(link):
    global _session
    current_url = link
    articles = []
    while True:
        # 先爬当前页的内容
        _request = _session.get(current_url)
        # 采集当前页所有文章链接
        article_links = _request.html.find('h3 a')
        for article in article_links:
            articles.append(article.find('a', first=True).attrs['href'])
        # 查找下一页链接
        next_page = _request.html.find('link[rel="next"]', first=True)
        if not next_page:
            # 没有下一页就退出循环
            break
        # 有下一页就把下一页地址赋值给current_url,进入下一轮循环
        current_url = next_page.attrs['href']
    return articles


if __name__ == '__main__':
   _session = HTMLSession()
   url = 'https://lifebridgecapital.com/podcast/'
   links = tag_words_links(url)
   # 测试multifamily分类全分页采集
   print(parse_tag_links('https://lifebridgecapital.com/tag/multifamily/'))
代码说明
  • 用while循环实现分页遍历,只要存在下一页链接就持续采集,兼容任意分页数量的分类页
  • 每一页先采集当前页文章,再判断是否有下一页,不会遗漏任何分页的数据
  • 移除了重复请求逻辑,每个页面仅请求一次
  • 兼容无分页的分类场景,没有下一页链接会自动结束循环返回数据

内容的提问来源于stack exchange,提问作者Abbas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 20:27:00