Scrapy报错Unsupported URL scheme '':URL构造问题排查求助
解决Scrapy爬虫触发
Unsupported URL scheme ''错误的问题 错误原因分析
你遇到的问题根源在于生成的URL格式完全错误!看你打印的结果,每个"URL"都被多余的['和']包裹着(比如['https://www.active.com/running?page=0']),这根本不是合法的URL字符串——它是一个模仿列表语法的字符串。
当Scrapy尝试解析这个"URL"时,会把['之后、https之前的空内容当成URL的scheme(也就是http/https这部分),自然识别不出有效的协议,于是抛出Unsupported URL scheme ''的错误。
问题出在你的URL拼接代码里:你错误地给URL加了"['前缀和']"后缀,这完全是画蛇添足。
修正方案
修改你的url_lister函数,直接生成纯URL字符串即可,去掉那些多余的列表符号:
def url_lister(): url_list = [] page_count = 0 while page_count < 2: # 直接拼接页码,生成标准的URL字符串 url = "https://www.active.com/running?page=%s" % page_count url_list.append(url) print(url) page_count += 1 return url_list
如果你的Python版本在3.6及以上,更推荐用简洁的f-string写法:
def url_lister(): url_list = [] for page_count in range(2): url = f"https://www.active.com/running?page={page_count}" url_list.append(url) print(url) return url_list
验证结果
修正后生成的URL会是标准格式:https://www.active.com/running?page=0https://www.active.com/running?page=1
这样Scrapy就能正确识别https协议,不会再触发scheme错误了。
小提示
以后遇到URL相关的爬虫错误,第一步一定要检查生成的URL是否是纯字符串、无多余符号,可以打印出来仔细核对,或者用type(url)确认变量类型,避免把非标准格式的字符串当成URL传入。
内容的提问来源于stack exchange,提问作者VioGeo
相关产品推荐
相关产品推荐

