我找不到使用 urllib2 执行此操作的方法,但是使用原始套接字有一个明显的解决方案:
import urlparse
def found(text, data):
# return True if text was found in data
def get_title(url):
parsed_url = urlparse(url)
host = parsed_url.netloc
path = parsed_url.path
port = 80
web = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
web.connect((host, port))
except Exception:
return
web.send('GET %s HTTP/1.1\n' % path)
web.send('Host: %s\n' % host)
web.send('\n')
done = False
while not done:
data = web.recv(2048)
if len(data) > 0 and found("text", data):
web.shutdown(socket.SHUT_RDWR)
web.close()
title = title_match.group(1)
done = True
# Do something
这样一来,您就可以在找到相关数据后停止下载,并避免从大型网页下载不必要的内容。