2

Scrapy スパイダーを何日も実行しています。私は通常、スクレイピングしたアイテムの数などの統計を確認しようとします。ターミナルで次のコマンドを実行するだけで、統計が得られます。

$ telnet [IP] [PORT]
>>> spider.name
alf-spider
>>> stats.get_stats()
...

今、telnetlib を使用して Python でこれを実行したいのですが、上記の結果を達成できません。以下は私の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()

上記のコードが実行された場合、強制的に閉じるまでハングします。私は何が欠けていますか?

4

1 に答える 1

1

これは機能します。

#!/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()
于 2013-08-31T12:07:57.537 に答える