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

使用Scrapy的response.css时触发SyntaxError无效语法错误,求助

解决Scrapy代码中的SyntaxError与回调方法错误

嘿,我一眼就看到了两个导致问题的小细节,帮你逐一解决:

1. 直接引发SyntaxError的原因:Python 3的print语法

你写的print response.css("h1#firstHeading::text").extract()是Python 2的语法,而现在Scrapy默认基于Python 3运行,在Python 3里print是内置函数,必须用括号包裹要输出的内容。这就是你看到SyntaxError: invalid syntax的直接原因。

修正后写法:

print(response.css("h1#firstHeading::text").extract())

2. 隐藏的回调方法名错误

你的爬虫类里定义的方法是def parsed(self, response):,但Scrapy的Spider类要求默认的响应处理回调方法名为parse(末尾多了一个d)。如果方法名不对,就算修复了语法错误,Scrapy也找不到处理页面响应的函数,爬虫依然无法正常工作。

修正后的完整代码

import scrapy

class Spider1(scrapy.Spider):  # 小建议:类名遵循大驼峰命名规范,更符合Python惯例
    name = 'Wikipedia'  # 这里拼写纠正为正确的Wikipedia,不影响功能但更规范
    start_urls = ['https://en.wikipedia.org/wiki/Battery_(electricity)']
    
    def parse(self, response):
        # 额外小技巧:如果只需要第一个匹配的文本,用.get()比extract()更简洁
        # print(response.css("h1#firstHeading::text").get())
        print(response.css("h1#firstHeading::text").extract())

补充说明:.extract()会返回所有匹配结果的列表,而.get()直接返回单个匹配的字符串(无匹配时返回None),根据需求选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:35:33