Python 使用py文件中的scrapy(不在命令行中)
尝试使用以下命令从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 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)