从命令行参数到Python 3中的Unicode到URL

时间:2017-06-11 13:08:25

标签: python-3.x unicode scrapy

如果我建立一个准系统,它的工作效果很好。但在我的实际代码中,我收到了与Unicode相关的错误。

  

temp_url =“http://search.jd.com/Search?keyword=”+ quote(self.keywords)

     

文件“/usr/lib/python3.5/urllib/parse.py”,第706行,引用       string = string.encode(encoding,errors)

     

UnicodeEncodeError:'utf-8'编解码器无法在位置0编码字符'\ udce8':不允许代理

我正在使用一个参数将我的搜索字符串传递给Scrapy(1.4):

  

scrapy crawl jdspider -a keywords =“电灯”

,相关代码如下:

# -*- coding: utf-8 -*-
import scrapy, re
from urllib.parse import quote

def __init__(self, keywords=''):
    self.keywords = keywords.strip()

    temp_url = "http://search.jd.com/Search?keyword=" + quote(self.keywords)
    print ( temp_url )

所以打印甚至不会被执行 - 某事。不适用于引用方法。

Python 3.5.2 Scrapy 1.4.0 Kubuntu 16.04

我做错了什么?

1 个答案:

答案 0 :(得分:0)

当您使用中文或任何其他语言字符或符号时,这类问题很常见 尝试使用除utf-8之外的任何其他应用程序编码器对字符串进行编码 https://docs.python.org/3/library/codecs.html#standard-encodings

但是,第一个问题是,删除这个字符会使信息变得无用,或者可能在某种程度上没有用处。

如果这不是问题,请尝试删除该字符。 它似乎是字符串中的第一个字符。

使用Try和Except捕获异常 然后
  - 删除第一个字符
或更好的  使用for循环检查每个char并删除无法编码的字符。