朋友。
我正在尝试重写我的一个小工具。基本上,它从用户获得输入,如果该输入不包含“基本URL”,则函数将该输入构造为有效的URL以供程序的其他部分使用。
如果我写了它,那么程序只接受有效的url作为输入,它会工作;但是如果我传递一个字符串并构造它,urllib2.urlopen()将失败,我不知道为什么,因为值返回与str值完全相同...
import urllib2
import re
class XunLeiKuaiChuan:
kuaichuanBaseAddress = 'http://kuaichuan.xunlei.com/d/'
regexQuery = 'file_name=\"(.*?)\"\sfile_url=\"(.*?)\sfile_size=\"(.*?)\"'
agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2)'
def buildLink(self, aLink):
if aLink == '':
return
if 'xunlei.com' not in aLink:
aLink = self.kuaichuanBaseAddress + aLink
return aLink
def decodeLink(self, url):
url = self.buildLink(url) #it will return correct url with the value provided.
print 'in decodeLink ' + url
urlReq = urllib2.Request(url)
urlReq.add_header('User-agent', self.agent)
pageContent = urllib2.urlopen(urlReq).read()
realLinks = re.findall(self.regexQuery, pageContent)
return realLinks
test = XunLeiKuaiChuan()
link='y7L1AwKuOwDeCClS528'
link2 = 'http://kuai.xunlei.com/d/y7L1AwKuOwDeCClS528'
s = test.decodeLink(link2)
print s
当我用link2调用它时,它将按预期运行。当使用“链接”有人告诉我我想念的时候会失败吗?我的“旧版本”工作只接受完整的网址,但这种不明行为在这里杀了我......谢谢。
顺便说一句,如果使用完整网址,则返回一个空列表,只需打开网址并输入页面上的catcha即可。他们这样做是为了防止某种“攻击”......
答案 0 :(得分:0)
没关系,我在代码中输入了错误的主机名。