1

tl;dr:使用 httplib 创建到站点的连接。我失败了,我希望得到一些指导!

我遇到了一些麻烦。阅读有关 python 的 socket 和 httplib 的信息,尽管我的语法似乎有一些问题。

就这个:

connection = httplib.HTTPConnection('www.site.org', 80, timeout=10, 1.2.3.4)

语法是这样的:

httplib.HTTPConnection(host[, port[, strict[, timeout[, source_address]]]])

“source_address”的行为如何?我可以使用它的任何 IP 发出请求吗?我不需要一个用户代理吗?

另外,如何检查连接是否成功?

if connection:
print "Connection Successful."

(据我所知,HTTP 不需要每秒“你还活着吗” ping,只要客户端和服务器都正常,当发出请求时,它会被处理。所以我不能不断ping。)

4

1 回答 1

1

创建对象实际上并没有连接到网站:
HTTPConnection.connect(): Connect to the server specified when the object was created.

source_address似乎随任何请求发送到服务器,但似乎没有任何效果。我不确定您为什么需要为此使用用户代理。无论哪种方式,它都是一个可选参数。

您似乎也无法检查是否建立了连接,这很奇怪。

假设您要做的是获取网站根目录的内容,您可以使用以下命令:

from httplib import HTTPConnection
conn = HTTPConnection("www.site.org", 80, timeout=10)
conn.connect()

conn.request("GET", "http://www.site.org/")
resp = conn.getresponse()

data = resp.read()
print(data)

(来自HTTPConnection 文档的猛烈抨击)

不过老实说,您不应该使用httplib, 而是使用urllib2其他更...低级的 HTTP 库。

于 2013-10-23T17:34:19.463 回答