2017-06-20 12 views
-1

私のプロジェクトでプロキシローテーションを使用してウェブサイトからのアクセスを禁止しましたが、http://website/0001http://website/9999に盗み、彼らは私をウェブサイト/ contact.htmlに送ります。手動でscrapy-rotating-proxiesパッケージを使用してプロキシを無効に設定しました

私はすでに設定で
ROTATING_PROXY_LIST = [ 'proxy1.com:8000', 'proxy2.com:8031', # ... ]

を私のプロキシリストを持っていると私は、このクモを作成しました:

next_page_url = response.url[17:]//getting the relative url from website/page 

    if next_page_url == "contact.html": 

     absolute_next_page = response.urljoin(last_page) 
     yield Request(absolute_next_page) 
     //should try the same page with different proxy 
    else: 
     next_page_url = int(next_page_url)+1 
     last_page = str(next_page_url).zfill(4) 
     absolute_next_page = response.urljoin(last_page) 
     yield Request(absolute_next_page)` 

しかし、それはUnboundLocalErrorというエラーを与える:代入する前に、参照ローカル変数「LAST_PAGE」を

このスパイダーでプロキシが死んでいると指定する方法を教えてください。あるいは同じことをする別の方法がありますか?

答えて

0

あなたは何を求めようとしていますか?

あなたがエラー

UnboundLocalError: local variable 'last_page' referenced before assignment 

あなたがいない通貨が初期化されている変数を使用しようとしているこのエラー状態を持って言っています。

ので、申し訳ありませんが、この

next_page_url = response.url[17:]//getting the relative url from website/page 

next_page_url = int(next_page_url)+1 
last_page = str(next_page_url).zfill(4) 
absolute_next_page = response.urljoin(last_page) 

if next_page_url == "contact.html": 

     next_page_url = int(next_page_url)+1 
     absolute_next_page = response.urljoin(last_page) 

     req = Request(url = absolute_next_page) 

     // If you want to try the same link again, then do this 
     // req = Request(url = response.url) 

     req.meta['proxy'] = random.choice(ROTATING_PROXY_LIST) // choose a random proxy 

     yield req 

else: 

     yield Request(absolute_next_page) 
+0

のようにコードを変更する、このエラーを回避するためには、言及を忘れてしまったことがcontact.htmlに入力した場合ので、私は、start_urls変数の後にグローバル変数としてLAST_PAGEを初期化してきました私は最後のリクエストでアクセスしようとしていたのと同じリンクに戻る必要がありますが、私はまだそれを行う方法がわかりません。 –

+0

私にあなたの完全なコードをpastebin.comに表示 – Umair

+0

ここにhttps://pastebin.com/xDcC2AH8 –

関連する問題