我制作了一个Python脚本,用于验证Wikipedia链接链是否有效。例如,链
List of jōyō kanji > Elementary schools in Japan > Education > Knowledge
是有效的,因为您只能通过点击链接访问每个页面。
这里的问题是这些页面很长并且下载整个页面,检查链接是否在页面中并且重复所有步骤将花费很长时间。链条也可能更长。
所以我想知道的是,如果我可以使用urllib2
(或任何其他库)下载每个页面并告诉它在需要时停止,或者这只会给CPU带来更多负担并制作东西差。
答案 0 :(得分:1)
为什么要重复这些步骤。您应该能够并行执行这些操作,因为每个步骤应该彼此独立。
答案 1 :(得分:0)
使用维基百科中的static snapshot可能会更好。
答案 2 :(得分:0)
我找不到使用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
这样您就可以在找到相关数据后停止下载,并避免从大型网页下载不必要的内容。