Selenium+PhantomJS实现简易有道翻译爬虫
Selenium一款自动化测试工具,当然用来写爬虫也是没有问题的。它支持Chrome、Safari、Firefox等主流界面式浏览器,另外它也支持多种语言开发,比如 Java,C,Ruby,Python等。PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎,当我们爬一些网站,页面全js渲染,如果逐个去分析后台请求,对于web高手无所谓,但对于像我这样连js都不太懂的小白来说,简直崩溃。这个时候用PhantomJS就可以帮助我们像浏览器一样渲染js处理的页面。
代码很简单,关键地方已注释:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2018/1/5 16:55 4 # @Author : Eivll0m 5 # @Site : https://github.com/Eivll0m 6 # @File : YD_dict.py 7 # @Software : PyCharm 8 9 from selenium import webdriver 10 from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 11 import sys 12 reload(sys) 13 sys.setdefaultencoding('utf8') 14 15 class YoudaoDict: 16 def __init__(self): 17 self.url = 'http://fanyi.youdao.com' 18 self.agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36' 19 self.dcap = dict(DesiredCapabilities.PHANTOMJS) 20 self.dcap["phantomjs.page.settings.userAgent"] = self.agent 21 self.service_args = [] 22 self.service_args.append('--load-images=no') ##关闭图片加载 23 self.service_args.append('--disk-cache=yes') ##开启缓存 24 self.service_args.append('--ignore-ssl-errors=true') ##忽略https错误 25 self.browser = webdriver.PhantomJS('D:\\Program Files\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe',service_args=self.service_args) 26 27 def transTarget(self): 28 browser = self.browser 29 browser.get(self.url) 30 browser.implicitly_wait(3) 31 text = browser.find_element_by_id('inputOriginal') 32 text.clear() 33 while 1: 34 key = str(raw_input('请输入您需要翻译的内容:')) 35 if key == 'quit': 36 browser.quit() 37 exit() 38 if key: 39 break 40 text.send_keys(key.decode('utf-8')) 41 while 1: 42 try: 43 bro = browser.find_element_by_css_selector('#transTarget > p > span') 44 break 45 except: 46 print '还未定位到元素!' 47 return bro.text 48 49 if __name__ == '__main__': 50 D = YoudaoDict() 51 while 1: 52 print D.transTarget()
运行效果: