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 webdriver10 from selenium.webdriver.common.desired_capabilities import DesiredCapabilities11 import sys12 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.agent21 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.browser29 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 break40 text.send_keys(key.decode('utf-8'))41 while 1:42 try:43 bro = browser.find_element_by_css_selector('#transTarget > p > span')44 break45 except:46 print '还未定位到元素!'47 return bro.text48 49 if __name__ == '__main__':50 D = YoudaoDict()51 while 1:52 print D.transTarget()
运行效果: