これが可能かどうかわからない場合は、同様の質問のように見えるが、まだ不明な質問を見てください。Web サイトの URL のリストについては、開始点として html を取得する必要があります。
これらの URL のリストを含むクラスがあり、クラスはこれらを繰り返し処理して html を取得するのに役立つカスタム イテレータを返します (以下に簡略化)。
class Url:
def __init__(self, url)
self.url = url
def fetchhtml(self)
import urllib2
response = urllib2.urlopen(self.url)
return response.read()
class MyIterator:
def __init__(self, obj):
self.obj=obj
self.cnt=0
def __iter__(self):
return self
def next(self):
try:
result=self.obj.get(self.cnt)
self.cnt+=1
return result
except IndexError:
raise StopIteration
class Urls:
def __init__(self, url_list = []):
self.list = url_list
def __iter__(self):
return MyIterator(self)
def get(self, index):
return self.list[index]
2 - のように使えるようにしたい
url_list = [url1, url2, url3]
urls = Urls(url_list)
html_image_list = {url.url: re.search('@src="([^"]+)"', url.fetchhtml()) for url in urls}
3 - 私が抱えている問題は、リストで fetchhtml を順番に操作するのではなく、すべてのリクエストをバッチ処理したいことです。それらが完了したら、イメージ リストを抽出します。
これを達成する方法はありますか、おそらくスレッドとキューを使用しますか? オブジェクトのリスト内包表記を、順番に実行しないとこのように機能させる方法がわかりません。たぶんこれは間違った方法ですが、リスト内の操作または辞書内包表記によって開始された長時間実行される要求をバッチ処理したいだけです。前もって感謝します