爬虫----selenium+PhantomJS

作者: 依旧丶森 | 来源:发表于2018-02-27 14:30 被阅读24次

1. 为啥用?

当一个网站的反扒机制做的很好,需要耗费大量精力去研究,而且对数据爬取速度没太紧的时间要求时,可以通过selenium测试工具和phantomjs无界面浏览器结合,通过模拟正常的浏览器访问来获取数据。其缺点时运行速度慢。

2.快速使用

  • 1.安装运行环境
    • pip install selenium
    • 下载phantomjs浏览器

    1. 简单快速使用
    from selenium import webdriver

    #配置了path时启动phantomjs及其路径。
    dirver=webdriver.PhantomJS('../phantomjs-2.1.1-windows/bin/phantomjs.exe')
    #也可以配置path来实现配置路径。
    #爬取网页
    dirver.get('http://www.baidu.com')

    #1.网页截图结果
    dirver.save_screenshot('baidu1.png')

    #2.保存访问的源代码
    with open('baidu1.html','w') as f:
        f.write(dirver.page_source.encode('utf-8'))
    1. 获取页面后的其他操作

    获取页面,找到输入框,输入搜索词语
    keyword=dirver.find_element_by_id('kw')
    keyword.send_keys(u'火车票')

    点击搜索按钮,搜索
    btn=dirver.find_element_by_id('su').click()

    当网页里包含网页时切换到小网页
    driver.switch_to.frame("login_frame")

    登录表单中填写数据
    driver.find_element_by_id("username").send_keys(u'156')
    driver.find_element_by_id("password").send_keys(u'D6')

    按标签查找
    btn = driver.find_element_by_css_selector("#fm1")

3.验证码问题

有些网站登录需要验证码,此时可以选择第三方打吗平台或者使用机器学习识别图片模块
这里使用Tesseract-OCR图片识别。

    1. 安装软件Tesseract-OCR
      安装时选好语言包,一般英文数字识别较好,中文较差。
    1. 安装 Python 的 pytesseract 模块
      因为是图片识别,还需确认是否有pillow模块。

代码实现

    # 引入机器学习模块
    import pytesseract

    # 引入图形处理模块
    from PIL import Image

    #引入一张图片
    img=Image.open('bb.png')
    #设置指定Tesseract-OCR安装的路径。
    tessdata_dir_config = '--tessdata-dir "D:\\Tesseract-OCR\\tessdata"'

    # 识别图片
    text = pytesseract.image_to_string(img,config=tessdata_dir_config)

    print text

遇到的问题:
1.FileNotFoundError: [WinError 2] 系统找不到指定的文件

解决方法:
方法1[推荐]: 将tesseract.exe添加到环境变量PATH中,
方法2: 修改pytesseract.py文件,指定tesseract.exe安装路径tesseract_cmd = 'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe‘
方法3: 在实际运行代码中指定
pytesseract.pytesseract.tesseract_cmd = 'D:\Tesseract-OCR\tesseract.exe'
2.pytesseract.pytesseract.TesseractError: (1, 'Error opening data file \Tesseract-OCR\tessdata/eng.traineddata')
解决方法:
方法1:
将tessdata目录的上级目录所在路径(默认为tesseract-ocr安装目录)添加至TESSDATA_PREFIX环境变量中
例如: C:\Program Files (x86)\Tesseract-OCR
方法2: 在.py文件配置中指定tessdata-dir
tessdata_dir_config = '--tessdata-dir "D:\Tesseract-OCR\tessdata"'
使用时指定config设置
pytesseract.image_to_string(image,config=tessdata_dir_config)

解决这两个问题即可使用了。

相关文章

  • 爬虫----selenium+PhantomJS

    1. 为啥用? 当一个网站的反扒机制做的很好,需要耗费大量精力去研究,而且对数据爬取速度没太紧的时间要求时,可以通...

  • warnings.warn('Selenium support

    使用Selenium+PhantomJS爬虫报错,错误详情如题原因:最新版本的Selenium不支持Phantom...

  • 【Python爬虫】selenium+Phantomjs

    工具简介: 1、selenium简介:一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用...

  • 2018新年版拉钩爬虫,selenium+PhantomJS

    Ps : 随着一代代的先辈爬虫和拉钩的攻防战,这一场惨烈的攻防战,双方的军备竞赛不断升级。好了,轮到我上场的时候,...

  • Python小记:selenium+PhantomJS爬虫解决页

    爬到了一个无比纠结的网站,爬虫遇到了阻碍,从页面直接浏览的时候几乎感觉不出来什么,但是直接使用爬虫访问该网站会出现...

  • 请求库之selenium

    一、介绍 二、安装 selenium+chromedriver selenium+phantomjs 三、基本使用...

  • python3 获取cookie解决方案

    方案一: 利用selenium+phantomjs无界面浏览器的形式访问网站,再获取cookie值: from s...

  • python3 获取cookie解决方案

    方案一: 利用selenium+phantomjs无界面浏览器的形式访问网站,再获取cookie值: 方案二: 利...

  • 初探selenium+phantomjs

    初衷 项目背景是,从某网站抓取的公司企业信息去天眼查核实这个公司真实存在,最初想法是用scrapy框架搞一下,但是...

  • Selenium+PhantomJS网页截图BUG

    # 使用Selenium+PhantomJS进行整个网页的截图,发现一个BUG:图片能够显示的最大长度是有限的。 ...

网友评论

    本文标题:爬虫----selenium+PhantomJS

    本文链接:https://www.haomeiwen.com/subject/gvapxftx.html