首页 > 解决方案 > scrapy CrawlerProcess() 运行我的输入字段两次

问题描述

我制作了一个脚本来要求你输入一些单词,它会搜索我的代码

class Amazon_spiders(scrapy.Spider):
    name = "amazon"
    start = time.time( )
    search = []
    starting=[]
    parse_number=0
    number = input('Enter the number of times to search \n')
    for n in range(int(number)):
        word = input("Enter one sentence to be searched  \n ")
        search.append(word)
        words = word.strip()
        # replace space with +
        words = word.replace(' ', '+')
        url = f'https://www.amazon.com/s?k={words}&ref=nb_sb_noss'
        starting.append(url)
    start_urls=starting
    def start_requests(self,response):
        print(f'currant page {response.url}')
        yield Request(url=response.url, callback=self.parse_url)

错误是它要求我输入一个单词两次:

看照片

另一个错误类型错误:start_requests() 缺少 1 个必需的位置参数:“响应”,感谢您的帮助

标签: pythonscrapy

解决方案


我们应该很好,但是这个问题对你来说怎么可能不明显呢?每次通过循环时都要求输入。如果您想询问一次单词但多次将其添加到列表中,那么这就是您应该做的。这意味着将您for n in range(int(number)):移至之前starting.append(url)(并调整缩进以匹配。

或者,您甚至不需要循环:

starting.extend( [url] * int(number) )

推荐阅读