0

私は最近、Python の BeautifulSoup Library を使用して大量のメタデータをスクレイピングしました。そのメタデータに含まれるすべての URL を .txt ファイルに保存しました。ただし、代わりにすべてのリダイレクト URL が必要です。私は一度に1つの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 ""

テキスト ファイルをリストに渡してから、そのリストを引数として渡そうとしましたが、次のエラーが発生しました。

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 ""

テキスト ファイルまたはそのテキスト ファイルからのデータのリスト表現を関数のパラメーターとして渡し、ファイルをループし、すべてのリダイレクト URL を抽出する方法はありますか? 皆さん、ありがとうございました。

4

2 に答える 2

1

get_redirect_url()間違った方法で電話していると思います。

*「splat」演算子です。入力としてリストを受け取り、関数呼び出しで実際の位置引数に展開します。

だから、書くことによってget_redirect_url(*data)あなたは言っていget_redirect_url(url1, url2, url3, ..)ます。ただし、関数はurlという 1 つの引数のみを受け入れます。

要約すると、get_redirect_url()一度に 1 つの引数だけで呼び出す必要があります。

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
于 2013-10-02T18:46:32.543 に答える