python - 在python中命名收益返回的问题
问题描述
我正在尝试使用 python 和 scrapy 抓取一个网站,但我在保存结果时遇到了问题。
我收到的错误日志:
yield result = {
^
SyntaxError: invalid syntax
当我删除“ result = ”时,我没有收到任何错误,但我这样做的原因是将结果保存为我在“ f.write(result) ”中代码的最后一部分使用的变量
代码如下:
import scrapy
class ExampleSpider(scrapy.Spider):
name = "ufcspider"
start_urls = [
'http://quotes.toscrape.com/page/1/',
]
def parse(self, response):
for quote in response.css('div.quote'):
yield result = {
'text': quote.css('span.text::text').get(),
'author': quote.css('small.author::text').get(),
'link': 'http://quotes.toscrape.com' + quote.css("span a::attr(href)").get(),
'tags': quote.css('div.tags a.tag::text').getall(),
}
next_page = response.css("li.next a::attr(href)").get()
if next_page is not None:
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, callable=self.parse)
page = response.url.split("/")[-2]
filename = f'quotes-{page}.json'
with open(filename, 'wb') as f:
f.write(result)
self.log(f'Saved file {filename}')
解决方案
先定义result
,yield
再定义
result = { ... }
yield result
推荐阅读
- html - 导航栏按钮未出现引导程序 4
- mysql - MySQL - 查询没有返回正确的结果
- angular - Bundle.js 从列表中丢失
- stream - Apache Pulsar 支持的最大消息大小
- jquery - 使用 if 语句使用 jquery 每个函数时遇到问题
- python - 使用 enumerate 获取列表列表 (json)
- java - 如果@Retryable 返回值,则@Recover 不起作用
- c# - 如何使 SVG 在其中显示特定数量的路径
- ansible - lineinfile/regexp/line:为什么在文件末尾有行?
- adobe-illustrator - 添加新的 Illustrator 脚本标尺单位