2017-07-31 25 views
0

私は以前にthisという質問を投稿して、Pythonスクリプトのヘルプを求めましたが、多くのフィードバックは得られませんでした。私は自分自身で大部分をどのように処理するかを考え出したので、私はいくつかの問題に遭遇しています。リストを繰り返してPythonでアイテムをダウンロードする

私のスクリプトは、現在、このようなものです:

param1 = 
param2 = 
param3 = 

requestURL = "http://examplewebpage.com/live2/?target=param1&query=param2&other=param3" 

html_content = urllib2.urlopen(requestURL).read() 

matches = re.findall('<URL>(.*?)</URL>', html_content); 

myList=[matches] 

i = 0 
while i < len(myList): 
    testfile = urllib.URLopener() 
    testfile.retrieve(myList[i], "/Users/example/file/location/newtest") 
    i += 1 

は、これが成功したWebページからすべてのURLを取得しますが、私は、ダウンロードプロセスを続行する方法を見つけることができません。私は現在、次のエラーが表示されています: 'リスト'オブジェクトに属性 'ストリップ'がありません

これを行うにはもっと良い方法がありますか?または、リスト以外のデータタイプを使用する必要がありますか?

答えて

1

私は、主な問題は、myList=[matches]がそれにちょうど1つの要素を含む新しいリストを作成することだと思います。その1つの要素は、それ自体がマッチのリストです。

ループ内でmyList[0]にアクセスすると、実際にはリストになります。したがって、エラー。

はあなたのコードの残りの部分は正しいと仮定すると、私はあなただけmyList=matchesに切り替えた場合、物事はおそらく動作すると思いますが、ここで明確に変数名とforループ使用するバージョンです:

requestURL = "http://examplewebpage.com/live2/?target=param1&query=param2&other=param3" 

html_content = urllib2.urlopen(requestURL).read() 

matches = re.findall('<URL>(.*?)</URL>', html_content); 

for url in matches: 
    testfile = urllib.URLopener() 
    testfile.retrieve(url, "/Users/example/file/location/newtest") 

EDITは

もちろん、URLopener.retrieveが自動的にファイルの名前を変更するようなことをしない限り、すべてのページは同じファイルに書き込まれますか?

関連する問題