如何编写浏览的Python机器人

时间:2011-04-04 20:34:40

标签: python robot

  

可能重复:
  Where shall I start in making a scraper or a bot using python?

我知道这显然是可能的...... 我被要求实施某种机器人访问网站,登录,访问一组链接,填写带有日期输入的搜索表单以获取XLS文件并注销。 如果手动完成这整个考验需要将近一个小时,所以脚本/机器人会为我们节省大量时间。

想法?图书馆?我想我需要urllib?
或者根本不使用Python? 提前谢谢!

编辑:我搜索了很多“python crawler”并且在评论之前没有发现Mechanize或Scrapy:/
我先来看看Mechanize。感谢。

2 个答案:

答案 0 :(得分:3)

我是twill python模块的粉丝。以下是我不久前用过的基本浏览和抓取代码的一小段代码。

import twill
import twill.commands as c

def login():
    c.clear_cookies()
    c.go('http://icfpcontest.org/icfp10/login')
    c.fv(1, 'j_username', 'Side Effects May Include...')
    c.fv(1, 'j_password', '<redacted>')
    c.submit()
    c.save_cookies('/tmp/icfp.cookie')

all_cars_rx = re.compile(r'<td style="width: 20%;">(\d+)</td><td>(\d+)</td>')
def list_cars():
    c.go('http://icfpcontest.org/icfp10/score/instanceTeamCount')
    cars = re.findall(all_cars_rx, c.show())
    if not cars:
        sys.stderr.write(c.show())
        sys.stderr.write('Could not find any cars')
    return cars;

值得一提的是,应该使用正则表达式来解析HTML。你在这里有一个在很短的时间内为ICFP做的肮脏的黑客攻击。

答案 1 :(得分:0)

最近我发现了PhantomJS并将其用于类似的任务。它是命令行JavaScript解释器,内置了功能齐全的Webkit引擎。恕我直言,它是非常易于使用的工具,适用于像你这样的任务,你可以使用Firebug获得所有类型的脚本功能。此外,它还具有内置调用功能,可以截取屏幕截图并将其保存到图像文件中。