我从命令python收集url,然后将其插入start\u url
from flask import Flask, jsonify, request
import scrapy
import subprocess
class ClassSpider(scrapy.Spider):
name = 'mySpider'
#start_urls = []
#pages = 0
news = []
def __init__(self, url, nbrPage):
self.pages = nbrPage
self.start_urls = []
self.start_urlsappend(url)
def parse(self):
...
def run(self):
subprocess.check_output(['scrapy', 'crawl', 'mySpider', '-a', f'url={self.start_urls}', '-a', f'nbrPage={self.pages}'])
return self.news
app = Flask(__name__)
data = []
@app.route('/', methods=['POST'])
def getNews():
mySpiderClass = ClassSpider(request.json['url'], 2)
return jsonify({'data': mySpider.run()})
if __name__ == "__main__":
app.run(debug=True)
我遇到以下错误:不支持raise(“不支持的url方案%s:%s”% scrapy.exceptions.NotSupported:不支持的URL方案“”:该方案没有可用的处理程序
当我把一个
print('my urls List: ' + str(self.start_urls))
,它打印一个url列表,如-->;我的url列表:['www.googole.com']
有什么帮助吗
我猜发生这种情况是因为您首先将
url
附加到self.start_urls
,然后使用列表self.start_urls
调用ClassSpider
srun
方法,然后将列表附加到列表,最后得到的是嵌套列表而不是字符串列表。为了避免这种情况,您可能应该如下更改
__init__
方法:然后在{}中传递{}而不是{}:
相关问题 更多 >
编程相关推荐