如何解决MY Scrapy webscraper OS仅返回最后一个引号
我编写了这个易用的网络抓取工具,以抓取this website上前10个页面上的所有引号,在运行代码后,我发现只有其中某些页面的最后一个引号才返回给我。 我需要一些建议,使我能使这只爬行的蜘蛛返回所有页面上的所有报价。这是我的代码
import scrapy
from google_quotes.items import GoogleQuotesItem
start_urls=['https://www.goodreads.com/quotes']
for number in range(1,11):
page_append='?page={}'.format(str(number))
start_urls.append('https://www.goodreads.com/quotes{}'.format(page_append))
class quotes(scrapy.Spider):
name='goodreads_quotes'
def start_requests(self):
urls=start_urls
for url in urls:
yield scrapy.Request(url=url,callback=self.parse)
def parse(self,response):
g_quotes=GoogleQuotesItem()
quotes=response.css('div .quoteText::text').extract()
for quote in quotes:
if len(quote)>10:
g_quotes['quote']=quote
return g_quotes
蜘蛛会按照我的意愿在所有页面中移动,但只会返回最后一个引号。
解决方法
正如@flaxon所说,您需要产生结果。您还需要注意缩进。
您还正在检查quote
变量(是字符串,不是列表)是否大于10,不确定原因。
def parse(self,response):
g_quotes = GoogleQuotesItem()
quotes = response.css('div .quoteText::text').extract()
for quote in quotes:
g_quotes['quote'] = quote
yield g_quotes # Notice the indentation
尝试一下,让我知道。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。