Python:HTTPConnectionPool(主机=“%s”,端口=80):

2024-10-03 11:25:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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获取内容,但它抛出了错误。此外,它在浏览器中运行良好。 脚本的对象是从域.txt文件并对其进行迭代,获取内容并将其保存在文件中。在

^{pr2}$

Tags: fromimporttxthttpdomainsleepopenfilename
1条回答
网友
1楼 · 发布于 2024-10-03 11:25:27

这条线就是问题所在:

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

现在您正试图向域%s发出请求,该域不是有效的域,因此出现错误“Name or 服务未知”。在

它应该是:

^{pr2}$

或者更简单地说:

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

另外,与您发布的错误无关,这些行也可能导致问题:

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

您将在一个循环中释放连接,因此循环将无法在第二次迭代中产生预期的结果。相反,您应该只在完成请求后释放连接。More details here。在

相关问题 更多 >