最近学习爬虫,遇到动态触发,异步加载,无法直接爬取数据,那么问题出现,解决的方法总是有的,需要用到两个工具:Selenium和PhantomJS。
下面介绍其基本概念和配置过程
概念
Selenium(浏览器自动化测试框架):是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本—–(来源百度百科https://baike.baidu.com/item/Selenium/18266)
PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情,它都能做到。它不仅是个隐形的浏览器,提供了诸如CSS选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG等,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等。
安装环境及配置过程
Windows 10(64位)
Anaconda3(python 3.6.1)
1 使用pip安装Selenuim
pip install -U selenium,安装目录如图
2. 安装PhantomJS
将phantomjs/lib目录下的phantomjs.exe文件放到python的安装目录D:\Anaconda3
测试
#!/usr/bin/python
# -*- coding: utf-8 -*-
#date:2017-09-29
__author__ = 'sunchengquan'
__project__ = 'XXXXXX'
__doc__ = 'XXXXXX'
__mail__ ='1641562360@qq.com'
from selenium import webdriver #导入python版的selenium(webdriver)
import time
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
'''
基于PhantomJS创建一个无界面浏览器,并且设置一下用户代理,
否则可能出现界面不兼容的情况
'''
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = ("Mozilla/4.0 (compatible; MSIE 5.5; windows NT)" )
browser = webdriver.PhantomJS(desired_capabilities=dcap)
'''
我们通过PhantomJS打开相关动漫网页,将相关动漫图片地址触发出来
'''
browser.get('http://ac.qq.com/ComicView/index/id/539443/cid/1';)
print(browser.title) #获取标题<title>《宛香》遇见(1)-在线漫画-腾讯动漫官方网站</title>
print(browser.page_source) #打印当前网页所有源代码
测试结果成功 ,如图所示