2013-02-03 105 views
1

我想從選擇列表中選擇一個隨機的URL,但它不工作。這裏是我的代碼:Python的隨機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 

任何幫助表示讚賞。謝謝!

+0

選擇(「你好」) - >一個字母...選項(電話)將只返回URL –

回答

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 
+0

的一個字母我都用過這個,它第一次成功地使用隨機,但在那之後,電話不再打電話。使用舊的代碼,它會繼續呼叫,直到我停止它,但只有列表中的第一個電話。 – user1947236

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]