我有一个 Scrapy 蜘蛛运行了好几天。我通常会尝试检查统计信息,例如它已抓取了多少项目等等。我只需在终端中运行以下命令,它就会给我统计数据。
$ telnet [IP] [PORT]
>>> spider.name
alf-spider
>>> stats.get_stats()
...
现在我想用 Python 使用 telnetlib 来做到这一点,但我无法获得上述结果。以下是我的 python 代码。
#!/usr/bin/env python
import sys
import getpass
import telnetlib
HOST = "192.168.1.5"
def main():
ports = ['6023']
if len(sys.argv) > 1:
ports = sys.argv[1].split(',')
for port in ports:
get_stats(port)
def get_stats(port):
tn = telnetlib.Telnet(HOST, port)
tn.write("spider.name\n")
print tn.read_all()
if __name__ == '__main__':
main()
上面的代码如果运行只是挂起,直到强制关闭。我错过了什么?
请您参考如下方法:
这会起作用。
#!/usr/bin/env python
import sys
import getpass
import telnetlib
HOST = "192.168.1.5"
def main():
ports = ['6023']
if len(sys.argv) > 1:
ports = sys.argv[1].split(',')
for port in ports:
get_stats(port)
def get_stats(port):
tn = telnetlib.Telnet(HOST, port)
tn.read_until('>>>')
tn.write("spider.name\n")
print tn.read_until('>>>')
tn.close()
if __name__ == '__main__':
main()
