在这里我们需要使用到一个模块,selenium
selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
selenium用于爬虫,主要是用来解决javascript渲染的问题
同时我们还需要下载 PhantomJS
安装phantomjs
下载地址为:http://phantomjs.org/download.html
下面介绍一下怎么使用
使用webdriver.PhantomJS(executable_path=r'phantomjs路径')
接下来发送页面请求,方法和request方法类似
driver.get('http://www.baidu.com') 以百度举例
现在我们已经发送了请求,现在需要将页面信息接收到
driver.page_source 这就是我们需要的界面信息,此为固定方法
保存一下界面
driver.save_screenshot("01.png")
返回的界面是百度搜索首页,接下来我们我们使用python将界面填入搜索词
先分析一下这个百度搜索界面
看到搜索框有id,所以我们使用这个id将我们需要的数据数据进去
driver.find_element_by_id("kw").send_keys("旋涡鸣人")
接下来点击搜索
driver.find_element_by_id('su').click()
有些时候个别网站使用的一些反爬虫技术,我们可以使用这种无界面方式来进行请求,同时这种方法也可以使用xpath比较方便
但是缺点也十分明显,因为请求界面,效率会很低,在网络不好的情况下可能不会成功
接下来上代码
from selenium import webdriver
import time
driver = webdriver.PhantomJS(executable_path=r'd:\Desktop\phantomjs-2.1.1-windows\bin\phantomjs.exe')
# 页面请求
driver.get('http://www.baidu.com')
#返回页面信息
driver.save_screenshot("01.png")
print(driver.page_source) #主要的是要这些数据
driver.find_element_by_id("kw").send_keys("旋涡鸣人")
driver.save_screenshot("02.png") #截频工具
driver.find_element_by_id('su').click()
time.sleep(6) #页面加载不完全,给一个时间相应
driver.save_screenshot('03.png')
print(driver.title)
# print(driver.get(Coolie))