Centos7 服务器上phantomjs自启动问题

无界面浏览器

phantomjs是selenium子包webdriver下面的一个浏览器,本身是一个浏览器(headless browser),更详细的使用教程可移步:[官方文档]http://selenium-python-zh.readthedocs.io/en/latest/index.html

phantomjs 配置问题

很多博客写phantomjs使用教程并不是写的很详细,或许我看得不够详细,直到在工作过程中遇到问题,才花时间详细了解一下。

配置使用,建议记一下

from selenium import webdriver
# 引入配置对象DesiredCapabilities
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
dcap = dict(DesiredCapabilities.PHANTOMJS)
#从USER_AGENTS列表中随机选一个浏览器头,伪装浏览器
dcap["phantomjs.page.settings.userAgent"] = (random.choice(USER_AGENTS))
# 不载入图片,爬页面速度会快很多
dcap["phantomjs.page.settings.loadImages"] = False
# 设置代理
service_args = ['--proxy=127.0.0.1:9999','--proxy-type=socks5']
#打开带配置信息的phantomJS浏览器
driver = webdriver.PhantomJS(phantomjs_driver_path, desired_capabilities=dcap,service_args=service_args)                
# 隐式等待5秒,可以自己调节
driver.implicitly_wait(5)
# 设置10秒页面超时返回,类似于requests.get()的timeout选项,driver.get()没有timeout选项
# 以前遇到过driver.get(url)一直不返回,但也不报错的问题,这时程序会卡住,设置超时选项能解决这个问题。
driver.set_page_load_timeout(10)
# 设置10秒脚本超时时间
driver.set_script_timeout(10)

需要记住的点:
(一):浏览器头设置
dcap["phantomjs.page.settings.userAgent"] = (random.choice(USER_AGENTS))
(二):图片是否载入问题
dcap["phantomjs.page.settings.loadImages"] = False
(三):代理设置
service_args = ['--proxy=127.0.0.1:9999','--proxy-type=socks5']
(四):页面连接超时时间设置
driver.set_script_timeout(10)

phantomjs进程自启动问题

因为在服务器上开启了定时任务,当把定时任务关掉后,还是会发现phantomjs会占用内存,百度(用不了梯子)了好些个方法,找到了解决的办法,这里稍微记录一下。

phantomjs 对多进程的支持性极不稳定,会出现一些莫名的问题,但是phantomjs 相对于Google浏览器占用内存少,轻量级,无界面,是一大可取之处。

(1) 代码问题:

问题代码

因为这一串代码,很粗心的没有用 try catch 方法包起来,只是简单的退出来,集成在scrapy 这个框架里,难免不出现问题。

正确代码姿势:

            driver = webdriver.PhantomJS()
            try:
                driver.get(request.url)
                print('current_url1 >>>>', driver.current_url)
                time.sleep(1)
                content = driver.page_source.encode('utf-8')
                driver.quit()
            except Exception as e:
                driver.quit()

加上了try catch

总结:

生活中加上 try catch 语句总免会减少些奇葩的bug 发生,难道不是吗?heh.......

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Selenium是一款强大的基于浏览器的开源自动化测试工具,最初由 Jason Huggins 于 2004 年在...
    FifiZhuang阅读 7,725评论 5 71
  • 洞见SELENIUM自动化测试 写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出...
    厲铆兄阅读 6,756评论 3 47
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,957评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,766评论 18 399
  • 多动行为是学前时期儿童的一种常见的问题行为,其核心症状为注意缺陷、多动和冲动,可导致明显的功能损害,如伙伴关系不良...
    脸红的青春期阅读 238评论 0 0