zoukankan      html  css  js  c++  java
  • 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()

    运行效果:

  • 相关阅读:
    js 各种常用js验证
    js url校验
    最近遇到的技术问题
    a标签的target的四个值
    新系统用到的新知识
    7 天打造前端性能监控系统
    前端必读:浏览器内部工作原理
    怎么判断ThreadPool线程池里的任务都执行完毕
    docker 在window 10 专业版的安装 && .net core 在docker的部署
    .net core 中后台获取前台 数据(post)的方法
  • 原文地址:https://www.cnblogs.com/Eivll0m/p/8455378.html
Copyright © 2011-2022 走看看