如何修复不支持的URL方案错误?

2024-06-16 10:33:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我从命令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']

有什么帮助吗


Tags: runnameimportselfappurlflaskdef
1条回答
网友
1楼 · 发布于 2024-06-16 10:33:59

我猜发生这种情况是因为您首先将url附加到self.start_urls,然后使用列表self.start_urls调用ClassSpidersrun方法,然后将列表附加到列表,最后得到的是嵌套列表而不是字符串列表。
为了避免这种情况,您可能应该如下更改__init__方法:

    def __init__(self, url, nbrPage):
        self.pages      = nbrPage
        self.url        = url
        self.start_urls = []
        self.start_urls.append(url)

然后在{}中传递{}而不是{}:

    def run(self):
        subprocess.check_output(['scrapy', 'crawl', 'mySpider', '-a', f'url={self.url}', '-a', f'nbrPage={self.pages}'])
        return self.news

相关问题 更多 >