一、原始需求
我需要根据单词找几百个图片,烦的不得了,还没办法用软件脱机抓取,所以干脆ipython来弄
打开ipython环境,使用下面几个命令:
-
# 打开单词文本,每个单词一行
-
# 读入lines中
-
cd Etools/EF2A/
-
filename="ef2a.csv"
-
f=open(filename,"r")
-
lines=f.readlines()
-
f.close()
-
-
# 每次读10行,在firefox中开10个标签
-
-
i=0;s=lines[i*10:i*10+10];es=[ i.split(';')[0] for i in s];fes=[i.replace(' ','_').strip() for i in es];
-
for i in fes: print i
-
for i in es:
-
comm=" -new-tab cn.bing.com/images/search?q=%s" % i.replace(' ','+')
-
!firefox $comm
每次手动修改 i=0的,一次开10个网页,找到图片后保存
二、最终版本
-
配置firefox关闭最后一个标签也不退出
-
打开 about:config
-
搜索 closewindow ,找到 browser.tabs.closeWindowWithLastTab 项目,把值改成 false。
-
修改上面的脚本,变成一次一条的执行查询,建立一个文件 catchp.py , 内容如下:
-
#!/usr/bin/env python
-
# -*- coding: UTF-8 -*-
-
-
# FileName : catchp.py
-
# Last Change: 2013年04月03日
-
# AUTHOR : BaiLiang , bailiangcn@gmail.com
-
-
"""
-
本脚本主要用于交互式的查询图片
-
"""
-
-
__revision__ = '0.1'
-
-
import os
-
-
def readfile(filename):
-
""" 从文件读取内容进入变量 """
-
f=open(filename,"r")
-
lines=f.readlines()
-
f.close()
-
return lines
-
-
def catchp(n,lines):
-
secline=lines[n:]
-
i = 0
-
esl=[ s.split(';')[0] for s in secline]
-
for es in esl:
-
i += 1
-
comm0 = "echo %s | xsel --clipboard --input" % es.replace(' ','_').strip()
-
comm1=" firefox -new-tab cn.bing.com/images/search?q=%s" % es.replace(' ','+')
-
os.system(comm0)
-
os.system(comm1)
-
raw_input("正在处理 %s %s : " % (i+n,es))
-
-
def main():
-
-
print """
-
本脚本主要用于交互式的查询图片,请在ipython 环境执行
-
"""
-
-
if __name__ == '__main__':
-
-
main()
使用方法:
-
打开ipython环境,在ipython环境内输入以下命令。
-
# 进入文本文件所在的目录
-
cd ~/Etools/EF2B
-
-
# 把父目录加入路径,以便一会能够找到 catchp.py
-
import sys
-
import os
-
sys.path.append(os.pardir)
-
-
#导入刚才建立的 catchp.py
-
import catchp
-
-
#读入文本文件
-
lines=catchp.readfile("ef2b.csv")
-
-
#开始一条一条的根据单词查询图片,每个单词会自动放入剪贴板,在ipython 环境内回车查询下一个单词
-
-
# 118表示从 118条开始,循环内想中断 ctrl+c
-
catchp.catchp(118,lines)
-
现在可以挑选图片,然后鼠标右键点击,保存图片,ctrl+v粘贴文件名,然后点击ipython窗口,回车继续下一个单词,我仍然觉得上面个步骤太麻烦,于是继续 DIY之
-
先确认系统安装了 xdotool,如果没有,安装命令是
-
sudo apt-get install xdotool
-
建立一个脚本 savepic.sh ,内容是,注意下面的粉色内容需要使用 xprop 命令查询(下面的xdotool 系列命令需要 firefox 的 pentadactyl 插件的配合)
-
#!/bin/bash
-
-
xdotool click 3
-
xdotool key V
-
sleep 0.5
-
xdotool key ctrl+v
-
sleep 0.5
-
xdotool key Return
-
sleep 0.5
-
xdotool key Return
-
sleep 0.5
-
xdotool key d
-
sleep 0.5
-
xdotool key d
-
sleep 0.5
-
xdotool key d
-
sleep 0.5
-
xdotool key d
-
sleep 0.5
-
# 使用 xprop 命令,点击 ipython 所在窗口,窗口名称为下面的名称
-
xdotool search --name "bl@bl-family: ~/Etools/EF2B" key Return
-
给 savepic.sh 增加执行权限
-
在ubuntu中做一个快捷键调用 savepic.sh 脚本
阅读(1182) | 评论(0) | 转发(0) |