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
相关产品推荐
相关产品推荐

