2016-10-15 33 views
1
import requests 
import urllib3 
from time import sleep 
from sys import argv 
script, filename = argv 
http = urllib3.PoolManager() 

datafile = open('datafile.txt','w') 
crawl = "" 

with open(filename) as f: 
mylist = f.read().splitlines() 

def crawlling(x): 
    for i in mylist: 
     domain = ("http://" + "%s") % i 
     crawl = http.request('GET','%s',preload_content=False) % domain 
     for crawl in crawl.stream(32): 
      print crawl 
      sleep(10) 
      crawl.release_conn() 
      datafile.write(crawl.status) 
      datafile.write('>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n') 
      datafile.write(crawl.data) 
      datafile.close() 
return x 


crawlling(crawl) 

_______________________________________________________________________ 
Extract of domain.txt file: 
fjarorojo.info 
buscadordeproductos.com 

私はpythonの初心者です。私はURLからコンテンツを取得しようとしていますが、エラーが発生しています。さらに、ブラウザで正常に動作しています。 スクリプトの目的は、domain.txtファイルからデータを取得し、それを反復処理して内容を取得し、ファイルに保存することです。Python:HTTPConnectionPool(host = '%s'、port = 80):

Getting this error: 
    raise MaxRetryError(_pool, url, error or ResponseError(cause)) 
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='%s', 
port=80):  Max retries exceeded with url:/(Caused by 
NewConnectionError('<urllib3.connection.HTTPConnection object at 
0x7ff45e4f9cd0>: Failed to establish a new connection: [Errno -2] Name or 
service not known',)) 
+0

'with'ブロックに間違った字下げがあります。' with'ブロック内で 'mylist'、' crawling() '(この関数を呼び出すだけではなく)を定義する必要があります – Andersson

答えて

0

この行は問題です:

crawl = http.request('GET','%s',preload_content=False) % domain 

今あなたがそれ故にエラー「名前または サービス、有効なドメインではないドメイン%sへの要求をしないようにしようとしています知られている "。

それは次のようになります。単に

crawl = http.request('GET', '%s' % domain, preload_content=False) 

以上:あなたが投稿エラーとは無関係のも

crawl = http.request('GET', domain, preload_content=False) 

、これらの行は、おそらくあまりにも問題が発生します:

for crawl in crawl.stream(32): 
     print crawl 
     sleep(10) 
     crawl.release_conn() # <-- 

ループ内で接続を解放しているので、ループは2番目の繰り返しで期待される結果を得ることができません。代わりに、要求が完了したら接続を解放するだけです。 More details here

+0

助けてくれてありがとう。 – Umair

+0

@umairこれがあなたの質問に答えた場合、それを解決済みとしてマークしてください。 – shazow

関連する問題