私は、約50のウェブサイトを照会するリクエスト.getオペレーションでRequestsThrottlerを実装しようとしています。Requests.get接続がBeautifulSoupで正しく動作していない
https://pypi.python.org/pypi/RequestsThrottler/0.2.2
RequestsThrottler前にコード(作品):私は渡していないよので
secondCrawlRequest = requests.get(row[6],headers=http_headers, timeout=5)
raw_html = secondCrawlRequest.text
SoupParser = BeautifulSoup(raw_html, 'html.parser')
results = SoupParser.find('div', attrs={'style':'padding-left:10px;width:98%'})
for para in results.findAll('p'):
para_text = para.text.strip()
list_of_paras.append(para_text)
RequestsThrottlerしたコードは、コードが失敗した
with BaseThrottler(name='base-throttler', delay=1.5) as bt:
secondCrawlRequest = requests.get(row[6],headers=http_headers, timeout=5)
reqs = [secondCrawlRequest for i in range(0, 5)]
throttled_requests = bt.multi_submit(reqs)
# where does responses get passed too?
responses = [tr.response for tr in throttled_requests]
raw_html = secondCrawlRequest.text
SoupParser = BeautifulSoup(raw_html, 'html.parser')
results = SoupParser.find('div', attrs={'style':'padding-left:10px;width:98%'})
for para in results.findAll('p'):
para_text = para.text.strip()
list_of_paras.append(para_text)
(失敗した)を追加'respond'パラメータが正しく設定されています。
私のエラーはこれです:
ファイル "/ユーザ/ helloworldに/ Pythonのプロジェクト/ハーベスター - web01_harvester.py" results.findAllにおけるパラため では、ライン264、( 'P'): NameError:名前 'results'が定義されていません
「応答」パラメータを正しく渡すにはどうすればよいですか?
[最小、完全で、かつ確認可能な例](http://stackoverflow.com/help/mcve)をご覧ください。あなたが示したコードではインデントエラーですが、それが修正されていれば、記述したエラーは発生しません。そのコードのコメントについて: 'respond'はどこにも使われていません。少なくともコードには表示されません。 – BlackJack
私は自分の投稿にインデントエラーを修正しました。 RequestsThrottlerを追加する前に動作するコードとRequestsThrottlerを追加した後に動作しないコードを掲載しました。 –
これは、 'BaseThrottler'コンテキストマネージャが' with'で発生した例外を抑制した場合にのみ発生します。 'result'への代入に達していないので、' secondCrawlRequest'という名前は、 'Request'インスタンスではなく、レスポンスインスタンスです。リンク先のPyPIページのサンプルコードと比較してください。 – BlackJack