代码如下
import sys
import urllib2
import requests
import re
reload(sys)
sys.setdefaultencoding("utf-8")
def download(searchname):
header = {
'Host':'sub.makedie.me',
'Pragma':'no-cache',
'Referer':'http://sub.makedie.me/',
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36'}
payload = {'searchword' : searchname}
url = 'http://sub.makedie.me/sub/'
s = requests.Session()
response = s.get(url,params=payload,headers=header)
if response.status_code == requests.codes.ok:
file = response.text
return file
file_temp = open('filetemp.txt','w')
file_temp.write(download(urllib2.quote("绿箭侠 第三季 第 13 集 /Arrow.S03E13.720p.HDTV.X264-DIMENSION.chn")))
raise InvalidURL("Invalid percent-escape sequence: '%s'" % h)
requests.exceptions.InvalidURL: Invalid percent-escape sequence: 'DI'
检查之后去掉绿箭侠 第三季 第 13 集 /Arrow.S03E13.720p.HDTV.X264-DIMENSION.chn
中'DI'前面的-后报错消失.
求教产生这种错误的原因,或者有什么比较好的替代方法,新人第一次提问,有什么问题大家指出,虚心接受大家的批评~
1
lxy42 2015-10-25 16:25:23 +08:00
试试 quote_all()
|
2
Sylv 2015-10-25 17:24:37 +08:00 1
脚本在我的 Mac 环境下并没有报这个错,所以我觉得很有可能是你的编码问题导致的,请尝试下以下步骤看看是否有效:
1. 确保脚本文件是以 UTF-8 编码保存的。 2. 脚本头部有正确的编码声明:# -*- coding: utf-8 -*- 3. 去掉 reload(sys) 和 sys.setdefaultencoding("utf-8") 语句,这不是解决 Python 2 编码问题的正确方法,原因可见 /t/163786 。 4. 去掉 urllib2.quote , requests 会自动帮你将 url 里的参数进行 quote ,不需要多此一举手动 quote 一次。 5. 在中文字符串前加 u : u"绿箭侠 第三季 第 13 集 /Arrow.S03E13.720p.HDTV.X264-DIMENSION.chn" |
3
theohateonion OP @Sylv 我已经使用 request 自动传入成功了
关于编码坑的解决真是受教了~ |
4
theohateonion OP @Sylv 现在求教在 vim 怎么设置 Python build system 的环境变量
|
5
Sylv 2015-10-26 04:16:09 +08:00 via iPhone
@theohateonion 你是什么系统?什么运行环境?我没用 vim ,你可以搜下对应环境下怎么设置 vin 的环境变量。
|
6
theohateonion OP @Sylv h=好的 感谢
|