0

これが可能かどうかわからない場合は、同様の質問のように見えるが、まだ不明な質問を見てください。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 を順番に操作するのではなく、すべてのリクエストをバッチ処理したいことです。それらが完了したら、イメージ リストを抽出します。

これを達成する方法はありますか、おそらくスレッドとキューを使用しますか? オブジェクトのリスト内包表記を、順番に実行しないとこのように機能させる方法がわかりません。たぶんこれは間違った方法ですが、リスト内の操作または辞書内包表記によって開始された長時間実行される要求をバッチ処理したいだけです。前もって感謝します

4

1 に答える 1