2017-02-01 12 views
0

がdownload_delayとConcurrent_requestsためscrapyのドキュメントを見て期待通りに動作していない、私が理解することです:私は「CONCURRENT_REQUESTS」を持つ場合:1秒の25とdownload_delayを、それがかつてscrapyは25ページを要求していることを意味し、scrapyすべての25がダウンロードされるのを待ってから1秒待ってから、再度25ページを要求します。私が0秒のdownload_delayを使用している場合、1秒の遅延なしで上記と同じ処理を行います。しかし、私がスクレーパーでこれらの設定を使用したとき、私のネットワーク使用量がちょうどちょうど私は0秒の遅延と比較して、0秒の遅延と比較して、0秒の遅延平均0.3Mbps(最大0.4Mbps)。ScrapyのDownload_Delayと同時要求

class DetailsxxxSpider(scrapy.Spider): 
name = "details" 
allowed_domains = ["www.xxx.com"] 
download_delay = 1 
custom_settings = {'CONCURRENT_REQUESTS': 25} 
def start_requests(self): 
    engine = create_engine('sqlite:///temp.db') 
    Base.metadata.bind = engine 
    DBSession = sessionmaker(bind=engine) 
    session = DBSession() 
    urls = session.query(Temp.url).filter_by(status = "Insert").all() 
    # print urls 
    for url in urls: 
     yield Request(url[0]) 

クロール率1秒の遅延を使用するときに0秒の遅延を使用して、1800頁/分の平均は43ページ/ページ/分率は、理想的には、900ページをする必要がありますけれども分である/分:ここに私のコードです。 1秒の遅延を使用すると、download_delayがリクエストごとに設定されているようです。

私はすべてのリクエストに対してプロキシを使用しています。私は何が欠けていますか? 25リクエストが1秒になると、Delayを設定できる方法はありますか? 私は理想的には900ページ/分のスピードが欲しい。どんな助けもありがとう。

download_delayあなたは= 1をdownload_delay使用する場合、それはそう秒で同じWebサイトからの連続したリクエストの間

を待機する時間であるおかげで

答えて

1

、あなたは常に/ < 60ページを持つことになります分。 (あなたのケースでは43)

900ページ/分を取得するには、あなたが使用する必要があります。

download_delay <(900分の60)< 0.067

を私の推測では約0.05

+0

連続リクエストごとに遅延を設定するのではなく、25リクエストが1秒になるようにダウンロード遅延を設定する方法はありますか? –

+0

これはスクラピーの設定で行うことはできないようです。 –

0

をしようとするだろう治療settings.pyまたはcustom_settings dictに'DOWNLOAD_DELAY'オプションを使用できます。

+0

これは質問に対する回答ではありません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューの投稿](/レビュー/低品質の投稿/ 18935914) –

関連する問題