2013-10-02 17 views
0

我最近使用Python的BeautifulSoup庫刮掉了一堆元數據。我將包含在該元數據中的所有網址保存爲一個.txt文件。不過,我需要所有重定向網址。我能夠在有時間做一個網址:Python - 如何遍歷URL的文本文件並將所有的URL傳遞到重定向處理程序

def get_redirect_url(url): 
    opener = urllib2.build_opener(urllib2.HTTPRedirectHandler) 
    request = opener.open(url) 
    return request.url 
print get_redirect_url("www.foo.com") 
print "" 

我試圖將文本文件傳遞到一個列表,然後通過這個列表作爲參數,並且我收到以下錯誤:「類型錯誤:get_redirect_url( )恰恰1個參數(11給出的)」

def get_redirect_url(url): 
    opener = urllib2.build_opener(urllib2.HTTPRedirectHandler) 
    request = opener.open(url) 
    return request.url 
with open ('openCRS_url.txt', 'r') as myFile: 
    data = [line.strip() for line in myFile] 
print get_redirect_url(*data) 
print "" 

是否有我可以通過可以是文本文件或從該文本文件作爲函數的參數的數據的列表表示的方式,依次通過文件,並提取所有的重定向網址?謝謝你們。

+0

你可以用BeatifulSoup刮東西,但不能循環通過一個文件? –

+0

http://docs.python.org/3/library/fileinput.html是你想要的模塊。 – 2013-10-02 15:15:20

回答

1

我瘦你打電話get_redirect_url()在錯誤的方式。

*是「splat」操作符:它將一個列表作爲輸入,並將其展開爲函數調用中的實際位置參數。

所以,通過編寫get_redirect_url(*data)你是在說get_redirect_url(url1, url2, url3, ..)。但是你的函數只接受一個參數:url

總結起來,你必須在時間只用一個參數調用get_redirect_url()

def get_redirect_url(url): 
    opener = urllib2.build_opener(urllib2.HTTPRedirectHandler) 
    request = opener.open(url) 
    return request.url 


with open ('openCRS_url.txt', 'r') as myFile: 
    urls = [line.strip() for line in myFile] 
    redirect_urls = [get_redirect_url(url) for url in urls] 
    print redirect_urls 
0
# UNTESTED 
def get_lots_of_urls(filename): 
    with open(filename) as infile: 
     return [get_redirect_url(url.strip()) for url in infile] 

for redirect_url in get_lots_of_urls('input_file.txt'): 
    print redirct_url 
+0

你可能想剝離它。 – thefourtheye

相關問題