Google search

触发

你在折腾自动登录网页的时候 实践了 实践-1 自动打开浏览器 进行google搜索 对吧

那次 你的例子只能通过 shell 调用脚本

python go_google.py

然后搜索的关键词 只是github

这次是你对这个的扩展

  • 你不止搜索 github 一个关键词 需要多个
    • 中文关键字能行么?

想法

  • 你可以在调用脚本时将外部数据(关键字)传递给脚本 让其使用
  • 中文关键字呢?你可以用“utf-8”编码解决吧

尝试

1.传递外部数据(关键字)

你可以这样

python go_google.py keywords01 keywords02 ...

让go_google.py脚本 使用传递过去的参数 keywords01 keywords02
这个你就要使用 sys module, sys.argv[]

your_keywords = sys.argv[1:]

这样你的关键词 keywords01 keywords02 ...就可以被脚本使用了 注意 sys.argy[0] 是你的脚本全名 go_google.py

这样你就得把关键词自动键入到google搜索栏中

代码 go_google.py:

# -*- coding: utf-8 -*-
import sys  
from selenium import webdriver # 这里使用了selenium 模块
from selenium.webdriver.common.keys import Keys

print """ Example 1:
==========

    * open a new Firefox browser
    * load the google homepage
    * search for "your_keywords"

"""
your_keywords = sys.argv[1:]

browser = webdriver.Firefox()             # open your firefox browser

browser.get("http://www.google.com")      # go to google webpage
assert 'Google' in browser.title          # confirm that title has “Google” word in it

search_elem = browser.find_element_by_name('q')  # name = "q" is in the search field of the google webpage source code 相当于点击进入了 google 搜索栏

for keywords in your_keywords:
    search_elem.send_keys(keywords + " ")

search_elem.send_keys(Keys.RETURN)    # search keyword Keys.RETURN like keyboard enter or Go

print "Mission Completed!"

以上可以实现 英文关键字 google 搜索了
shell调用:

python go_google.py python tutorail

效果:

1.自动打开firefox浏览器
2.自动进入 www.google.com
3.自动搜索 关键字 python tutorial
如图:

2.中文关键字搜索

1.问题:直接调用脚本

python go_google.py 编程 教程

出错 原因 编码问题

UnicodeDecodeError: 'utf8' codec can't decode byte 0xbd in position 0: invalid start byte

2.方案1:你可以全部使用UTF-8编码 之前在完成第一周任务-小小交互系统的时候 就已经知道了吧 week1日记交互系统 添加

# -*- coding: utf-8 -*-
import sys
reload(sys) # 必须 reload
sys.setdefaultencoding('utf-8') # 默认编码

使用utf8 can't decode

UnicodeDecodeError: 'utf8' codec can't decode byte 0xb1 in position 0: invalid start byte

3.分析for keywords in your_keywords:中的 keywords的类型是 str 但是 0bx1 这种格式的
search 调试 修改

search_elem.send_keys(keywords + " ") 这部分 猜测其中 keywords 编码出现问题 尝试

search_elem.send_keys(unicode(keywords) + " ")
search_elem.send_keys(keywords.decode("utf-8") + " ")
search_elem.send_keys(keywords.encode(sys.stdout.encoding) + " ")
search_elem.send_keys(keywords.decode("utf-8") + " ")
search_elem.send_keys(keywords.decode() + " ")
search_elem.send_keys(unicode(keywords, "ISO-8859-1").encode("utf-8") + " ")

各种编码试过 都出现 同上的 UnicodeDecodeError
你不要再花笨功夫了 好好去理解编码的问题吧...

有点累了 你要 KEEP CALM AND GO SLEEPING byebye

10/23/2015 9:33:41 PM