You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Scrapy实现网站多页循环爬取并提取博客链接?

问题解答

你原来的实现逻辑完全可以复用,甚至可以继续在Scrapy的解析流程里使用BeautifulSoup做页面解析,不需要强制切换到Scrapy自带的选择器。区别在于Scrapy内置了异步请求调度、自动重试、链接去重、并发控制等能力,不需要你自己手动写循环发请求、维护存储链接的外部列表。

具体实现可以参考以下Scrapy蜘蛛代码:

import scrapy
from bs4 import BeautifulSoup
import re

class BrookingsBlogSpider(scrapy.Spider):
    name = 'brookings_blog'
    # 和你原代码的基础URL保持一致
    base_url = 'https://www.brookings.edu/topic/environment/page/'

    def start_requests(self):
        # 对应原代码的for循环生成10页列表页请求,原range(1,10)仅生成1-9共9页,要爬10页调整为range(1,11)即可
        for page in range(1, 11):
            list_url = f"{self.base_url}{page}/?type=posts"
            yield scrapy.Request(url=list_url, callback=self.parse_list_page)

    def parse_list_page(self, response):
        # 直接复用你原有的BeautifulSoup解析逻辑即可
        soup = BeautifulSoup(response.text, 'lxml')
        links = [link['href'] for link in soup.find_all('a', href=re.compile('^(https://www.brookings.edu/blog/)'))]
        # 去重逻辑和原代码一致
        links = list(set(links))
        # 无需手动维护lis列表,直接将文章链接生成请求交给Scrapy调度
        for article_url in links:
            yield scrapy.Request(url=article_url, callback=self.parse_article_content)

    def parse_article_content(self, response):
        # 此处可继续用BeautifulSoup实现你原有的正文提取逻辑
        soup = BeautifulSoup(response.text, 'lxml')
        # 示例提取字段,可根据自己的需求调整解析规则
        article_title = soup.find('h1').get_text(strip=True) if soup.find('h1') else ''
        article_content = soup.find('div', class_='post-body').get_text(strip=True) if soup.find('div', class_='post-body') else ''
        # 直接返回爬取结果,Scrapy支持一键导出为json、csv等格式
        yield {
            'title': article_title,
            'url': response.url,
            'content': article_content
        }

注意事项

  • 代码运行前需要先安装对应的依赖:pip install scrapy beautifulsoup4 lxml
  • 你可以根据自己的需求调整正文提取的规则,不需要强制使用Scrapy的XPath/CSS选择器,原有BeautifulSoup的解析逻辑可以直接复用
  • Scrapy默认会自动对请求去重,不需要额外做重复请求的过滤处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:36:01