2015-04-22 62 views
2

我有一个Python脚本,需要输入一些网址。我的脚本遍历每个这些URL并从每个页面打印出htmltext。该网站会将此看作是3个独立的GET请求,因此3个“点击”到该网站,或者它会看到套接字连接并将其视为1次“点击”页面?从一个连接的网站上的多个网址获取html数据

我认为这是通过检查调试的第一个选项,如果是这样,是否有可能从同一网站上的多个网址获取数据,但该网站只能将该网站视为1次“点击”网站?我可以利用保持活动功能在urllib3中实现这一点吗?

我的脚本如下:

for u in url: 
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
    req = urllib2.Request(u) 
    req.add_header('User-Agent','Mozilla/5.0') 
    print urllib2.build_opener(urllib2.HTTPHandler(debuglevel=1)).open(req) 
    resp = opener.open(req) 
    htmltext = resp.read() 

回答

2

请问网站上看到这是3个独立的GET请求,因此3“命中”的网站,否则会看到套接字连接,并把它看成1“点击“到页面?

是的,即使您重新使用套接字连接,它仍然是3个不同的请求(超过一个套接字)。无论您使用了多少个连接,服务器的访问日志都会显示3个请求。

重用连接的好处是创建一个新的TCP套接字并与服务器协商握手是一个相对昂贵的过程。有时需要更多时间来完成这个任务,而不是检索HTTP响应主体本身。通过重新使用连接,可以在第一次请求后跳过该部分。

+0

感谢可以从3个不同的URL获取数据,但服务器不知道? –

+1

服务器必须知道它所服务的URL,否则它将如何服务它们? – kindall

+0

我希望能绕过它。因此,是否可以打开与网站的连接并持续获得?一个示例网站,一旦你浏览到页面的一些数据在页面中自动更新而不刷新页面是可以在python中模拟这个? –