Python 使用py文件中的scrapy(不在命令行中)

Python 使用py文件中的scrapy(不在命令行中),python,scrapy,Python,Scrapy,尝试使用以下命令从py文件启动scrapy: py myproject.py -f C:\Users\admin\Downloads\test.csv 这里是我的名为“myproject.py”的文件 这是我的蜘蛛文件: import scrapy import urllib class GGSpider(scrapy.Spider): name = "spiderman" domain = "https://www.google.fr/?q={

尝试使用以下命令从py文件启动scrapy:

py myproject.py -f C:\Users\admin\Downloads\test.csv
这里是我的名为“myproject.py”的文件

这是我的蜘蛛文件:

import scrapy
import urllib

class GGSpider(scrapy.Spider):
    name = "spiderman"
    domain = "https://www.google.fr/?q={}"
    myList = []
   
    def __init__(self):
        pass

    def start_requests(self):
        for leObject in self.myList:
            tmpURL = self.domain.format(urllib.parse.urlencode({'text' : leObject[0]}))
            yield scrapy.Request(url=self.domain+leObject[0],callback = self.parse)

    def parse(self, response):
        print('hello')
        print(response)
我的问题是:我进入start_请求,因为我将打印放在产量之前,并在控制台中获得打印 但是回调似乎没有附加(我没有得到“Hello”打印)


我真的不知道为什么(我是Python新手,也许我遗漏了一些明显的东西)

我想这是因为生成器在您检索其值之前并没有实际运行。您可以尝试以某种方式使用发电机:

导入spider.ggspider作为myspider
#返回数组
dataFile=args.file
myData=CSVReader.getAnimalList(数据文件)
leSpider=MySpiders.GGCSpider()
leSpider.myList=myData
对于leSpider.start_requests()中的请求:
做某事(请求)
UPD:这里有一个更好的:

import scrapy
从scrapy.crawler导入crawler进程
类MySpider(scrapy.Spider):
#你的蜘蛛定义
...
进程=爬网进程(设置={
“提要”:{
“items.json”:{“format”:“json”},
},
})
进程爬网(MySpider)
process.start()#脚本将在此处阻塞,直到爬网完成

看一看,我试过了,但它没有进入self.start\u请求谢谢你的回答,我想我开始明白了。现在使用for循环,我可以显示请求。但是回调仍然没有被触发,请求也没有响应response@Ritooon,我用文档中更好的例子扩展了答案。多亏了你,我成功了,我将更新我的问题以添加解决方案。谢谢
import scrapy
import urllib

class GGSpider(scrapy.Spider):
    name = "spiderman"
    domain = "https://www.google.fr/?q={}"
    myList = []
   
    def __init__(self):
        pass

    def start_requests(self):
        for leObject in self.myList:
            tmpURL = self.domain.format(urllib.parse.urlencode({'text' : leObject[0]}))
            yield scrapy.Request(url=self.domain+leObject[0],callback = self.parse)

    def parse(self, response):
        print('hello')
        print(response)