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

Scrapy新手求助:CrawlSpider无法解析链接问题

解决你的Scrapy链接解析问题

嘿,作为摸爬滚打多年的Scrapy玩家,一眼就瞅见你代码里几个新手常踩的小坑,这就帮你捋顺:

先揪出代码里的明显错误

  • 拼写失误:allowed_domais 少了个字母n,正确写法是allowed_domains——这个错误会直接导致Scrapy无法正确限制爬取域名,链接自然没法正常解析。
  • 代码截断:你写的follow=T...得补全成follow=True,这是控制Scrapy是否跟进提取到的链接的核心参数。
  • 缺失回调方法:规则里指定了callback='parse_item',但代码里没定义这个方法,运行时肯定会报错。

修正后的完整代码

import sys
sys.path.append(r'C:\Users\User\Miniconda3\Lib\site-packages')
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class MySpider(CrawlSpider):
    name = 'poder360.com'
    # 修正域名列表的拼写错误
    allowed_domains = ['poder360.com.br']
    start_urls = ['https://www.poder360.com.br']
    
    rules = (
        # 补全follow参数,同时可以通过allow字段缩小链接范围
        Rule(LinkExtractor(allow_domains=['poder360.com.br'], allow=r'/[a-z-]+/'), 
             callback='parse_item', 
             follow=True),
    )
    
    # 必须定义对应的回调方法,处理提取到的页面内容
    def parse_item(self, response):
        # 这里可以根据网站结构提取你需要的内容,示例提取URL和标题
        yield {
            'page_url': response.url,
            'article_title': response.css('h1::text').get(default='无标题'),
            # 其他字段比如正文、发布时间等,可通过CSS/XPath定位
        }

额外的实用小提示

  • 如果只想爬取特定类型的页面(比如新闻详情页),可以在LinkExtractor的allow参数里加正则,比如allow=r'/noticias/',这样只会提取新闻页面的链接,避免无效爬取。
  • 运行爬虫时记得用命令:scrapy crawl poder360.com,确保命令里的爬虫名称和代码里的name一致。
  • 要是还是有问题,就打开Scrapy日志(加--logfile scrapy.log参数),看看日志里的链接提取记录,能快速定位是没提取到链接还是其他逻辑问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:12:10