Python随机URL选择

时间:2013-02-03 00:54:14

标签: python

我正在尝试使用choice从此列表中选择一个随机URL,但它不起作用。这是我的代码:

import urllib, urllib2, sys
num = sys.argv[1]
print 'Started'
phones = [
'http://1.1.1.6/index.htm,'
'http://1.1.1.5/index.htm,'
'http://1.1.1.4/index.htm,'
'http://1.1.1.3/index.htm,'
'http://1.1.1.2/index.htm,'
'http://1.1.1.1/index.htm'
]
from random import choice
data = urllib.urlencode({"NUMBER":num, "DIAL":"Dial", "active_line":1})
while 1:
    for phone in phones:

                         urllib2.urlopen(choice(phone),data) # make call
                         urllib2.urlopen(choice(phone)+"?dialeddel=0") # clear
logs

这是我得到的错误

File "p.py", line 21, in ?
    urllib2.urlopen(choice(phone),data) # make call
  File "/usr/lib64/python2.4/urllib2.py", line 130, in urlopen
    return _opener.open(url, data)
  File "/usr/lib64/python2.4/urllib2.py", line 350, in open
    protocol = req.get_type()
  File "/usr/lib64/python2.4/urllib2.py", line 233, in get_type
    raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type: 5

感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:4)

你的逗号在你的字符串里面。因此,您的手机变量是一个大型字符串的列表。您的随机选择是从该字符串中为您提供单个字符。将其更改为:

phones = [
    'http://1.1.1.6/index.htm',
    'http://1.1.1.5/index.htm',
    'http://1.1.1.4/index.htm',
    'http://1.1.1.3/index.htm',
    'http://1.1.1.2/index.htm',
    'http://1.1.1.1/index.htm',
]

此外,您不应该通过手机进行迭代,而只需使用random.choice(phones)选择手机。

另外,您为两个URL调用选择了一个不同的随机电话,我猜这不是您想要的。这是一个完整的重构代码。

import urllib, urllib2, sys, random

phones = [
    'http://1.1.1.6/index.htm',
    'http://1.1.1.5/index.htm',
    'http://1.1.1.4/index.htm',
    'http://1.1.1.3/index.htm',
    'http://1.1.1.2/index.htm',
    'http://1.1.1.1/index.htm',
]

num = sys.argv[1]
data = urllib.urlencode({"NUMBER": num, "DIAL": "Dial", "active_line": 1})
while 1:
    phone = random.choice(phones)
    urllib2.urlopen(phone, data) # make call
    urllib2.urlopen(phone + "?dialeddel=0") # clear logs

答案 1 :(得分:0)

您可以尝试获取随机索引

import random
phones = [
'http://1.1.1.6/index.htm',
'http://1.1.1.5/index.htm',
'http://1.1.1.4/index.htm',
'http://1.1.1.3/index.htm',
'http://1.1.1.2/index.htm',
'http://1.1.1.1/index.htm',
]

index random.randrange(0, len(phones)-1)
phones[index]