Python学习之旅我爱编程

爬虫----selenium+PhantomJS

2018-02-27  本文已影响24人  依旧丶森

1. 为啥用?

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

2.快速使用


    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'))

3.验证码问题

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

代码实现

    # 引入机器学习模块
    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)

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

上一篇 下一篇

猜你喜欢

热点阅读