zoukankan      html  css  js  c++  java
  • Python爬虫 Selenium与PhantomJS

     

    Selenium

    Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动化操作,不同是Selenium可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。

    Selenium可以根据我们的指令,让浏览器自动加载页面,获取需要的页面,甚至页面截屏,或者判断网站上某些动作是否发生。

    Selenium自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。但是我们有时候需要让它内嵌在代码中运行,所有我们而已用一个叫PhantomJS的工具代替真实的浏览器。

    pip命令安装:pip install selenium

    PhantomJS

    PhantomJS是一个基于Webkit的"无界面"(headless)浏览器,它会把网站加载到内存并执行页面上的JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器更高效。

    如果我们把Selenium和PhantomJS结合在一起,就可以运行一个非常强大的网络爬虫了,这个爬虫可以处理JavaScript、Cookie、headers,以及任何我们真实用户需要做的事情。

    PhantomJS只能从它的网站(http://phantomjs.org/download.html)下载。因为PhantomJS是一个功能完善(虽然无界面)的浏览器而非一个Python库,所以它不需要像Python的其它库一样安装,但我们可以通

    过Selenium调用PhantomJS来直接使用 (目前phantomjs 已经停止维护)

    下载完成之后解压复制下面这个文件,

    把这个exe 文件复制到python环境里 scripts下 :

     

    下面上个例子,破解该网站,解析全网小视频转无水印链接

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    
    service_args=[]
    service_args.append('--load-images=no')         ##关闭图片加载
    service_args.append('--disk-cache=yes')         ##开启缓存
    service_args.append('--ignore-ssl-errors=true') ##忽略https错误
    
    driver = webdriver.PhantomJS(service_args=service_args)
    driver.get('http://www.700745.com/')
    driver.find_element_by_class_name('el-input__inner').send_keys('http://v.douyin.com/UP9RT7/')
    driver.find_element_by_id('button').click()
    element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.LINK_TEXT, "下载视频")))
    video_url = driver.find_element_by_link_text('下载视频').get_attribute('href')
    cover_url = driver.find_element_by_link_text('视频封面').get_attribute('href')
    
    print(video_url)
    print(cover_url)

    selenium 的具体使用方法 可参考  https://www.cnblogs.com/miqi1992/p/8093958.html

  • 相关阅读:
    linux进程间通信--信号量
    linux进程间通信--信号通信
    linux进程间通信--管道通信
    探究守护进程及其错误日志处理
    探究wait与waitpid之间的那些事
    探究一下strtok的用法
    文件IO与标准IO探究及总结
    Linux 库的制作--动态库与静态库
    python基础使用
    linux正则表达式使用
  • 原文地址:https://www.cnblogs.com/lvye001/p/11578013.html
Copyright © 2011-2022 走看看