用python抓取百度指数 以及 用cxfreeze打包的经验
用python抓百度指数,参考的文章是 https://github.com/TTyb/Baiduindex ,或者看这里 http://www.cnblogs.com/TTyb/p/6051366.html ,这两篇文章是一样的;
需要注意的地方是:
1)安装 selenium2.45 和 Firefox32.0.1 时要注意两者版本的匹配,Firefox版本太高反而不匹配;
2)当查找多个关键词的百度指数时,查第一个词时,是这样操作的:
browser.find_element_by_id("schword").clear()
browser.find_element_by_id("schword").send_keys(keyword) browser.find_element_by_id("searchWords").click()
但第一个词点击完,窗口就变了,查第二个词的时候是这样的:
browser.find_element_by_id("schword").clear() browser.find_element_by_id("schword").send_keys(keyword) browser.find_element_by_id("schsubmit").click()
3)得到关键词的百度指数截图时, 需要从截图中截出数字来,在裁剪的时候要考虑前面字符的长度,但字符有中文字符,英文字符,英文字符的长度是中文字符的一半,这个是要考虑到的,要不然剪切的长度太大,可能剪过了,剪出一个没有数字的黑图片来。
在rangle这行代码中,在原代码的基础上加入add_length,这个add_length的规则是中文字符长度占1,英文数字字符长度占1/2,这样来计算add_length;
add_length = (keyword_len - 2)*sizes['width']/15
rangle = (int(locations['x'] + sizes['width']/4 + add_length), int(locations['y'] + sizes['height']/2),
int(locations['x'] + sizes['width']*2/3), int(locations['y'] + sizes['height']))
用cxfreeze打包的时候,python文件中用到的package 类,加在packages includes里,还有会遇到一些奇怪的问题,报ImportError 或 sys._MEIPASS 有关的错误,这时候直接把出错的代码注释掉即可,在tesseract.py文件中run_tesseract这个方法中,注释掉 _set_environment() 这行就可以了。
build_exe_options = { 'packages' : ['selenium', 'os', 're', 'time', 'codecs', 'pyocr'], 'includes' : ['PIL', 'datetime'], }
posted on 2017-06-29 09:13 michael_YM 阅读(820) 评论(5) 编辑 收藏 举报