2016-10-15 6 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 (хост = «% s», порт = 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': вы должны определить' mylist', 'crawling()' (а также вызвать эту функцию) внутри 'with' block – 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() # <-- 

Вы освобождаете соединение в цикле, поэтому цикл не даст ожидаемых результатов на второй итерации. Вместо этого вы должны только освободить соединение после завершения запроса. More details here.

+0

Спасибо, что помогли мне. – Umair

+0

@umair Если это ответили на ваш вопрос, отметьте его как решение. – shazow