我知道这显然是可能的......我被要求实现某种机器人,它可以访问网站、登录、访问一组链接、填写带有日期输入的搜索表单以获取 XLS 文件并注销。如果手动完成,整个过程几乎需要一个小时,所以脚本/机器人可以为我们节省大量时间。
想法?图书馆?我想我需要 urllib?
或者可能根本不使用 Python?
提前致谢!
编辑:我搜索了相当多的“python 爬虫”,直到评论之前才发现 Mechanize 或 Scrapy:/
我将首先进一步研究 Mechanize。谢谢。
我知道这显然是可能的......我被要求实现某种机器人,它可以访问网站、登录、访问一组链接、填写带有日期输入的搜索表单以获取 XLS 文件并注销。如果手动完成,整个过程几乎需要一个小时,所以脚本/机器人可以为我们节省大量时间。
想法?图书馆?我想我需要 urllib?
或者可能根本不使用 Python?
提前致谢!
编辑:我搜索了相当多的“python 爬虫”,直到评论之前才发现 Mechanize 或 Scrapy:/
我将首先进一步研究 Mechanize。谢谢。
我是斜纹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 完成的。
最近我发现了PhantomJS并将其用于类似的任务。它是命令行 JavaScript 解释器,内置了功能齐全的 Webkit 引擎。恕我直言,对于像您这样的任务来说,它确实是一款易于使用的工具,并且您拥有使用 Firebug 所说的各种可编写脚本的功能。它还具有用于截取屏幕截图并将其保存到图像文件的内置调用。