一、selenium
selenium+phatomjs和selenium+chrome
selenium:是一种用于web程序测试的工具,selenium测试的代码可以直接运行在浏览器中,就像真正的用户操作一样。
在写python爬虫的时候,主要是用selenium的webdriver 来驱动浏览器进行相关的操作
安装:pip install selenium
selenium中元素查找:
find_element_by_id()
find_elements_by_name()
find_elements_by_xpath()
find_elements_by_tag_name()
find_elements_by_class_name()
find_elements_by_css_selector()
find_elements_by_link_text()
事件
click() 点击
send_keys()
switch_to_alert()
chromedriver:谷歌浏览器驱动
加载方法如下:
法一:driver = webdriver.Chrome(r'/Users/fanjianbo/Desktop/chromedriver')
法二:把chromedriver的目录配成环境变量路径,然后:driver = webdriver.Chrome()
【注意】chromedriver的版本要和chrome浏览器相对应,不然很多功能不能用
下载操作谷歌浏览器驱动的页面:http://chromedriver.storage.googleapis.com/index.html 或者 http://npm.taobao.org/mirrors/chromedriver/2.37/
谷歌驱动和谷歌浏览器版本之间的映射表:http://blog.csdn.net/huilan_same/article/details/51896672
phantomjs:无界面浏览器
加载方法如下:
法一:driver = webdriver.PhatomJS("C:\Users\ZBLi\Desktop\1706\day04\ziliao\phantomjs-2.1.1-windows\bin\phantomjs.exe")
法二:把phantomjs拷贝到c盘下,并把bin目录配置成环境变量,然后driver = webdriver.PhatomJS()
【注意】phantomjs目前已经不再更新
下载地址:http://phantomjs.org/download.html
二、使用
- 使用chrome浏览器
# 导入selenium工具
from selenium import webdriver
# 给浏览器加入无头浏览器,使得调取浏览器的时候不需要打开,只需要调用其内核即可
opt = webdriver.ChromeOptions()
opt.add_argument("--headless")
# 根据驱动所在的路径创建出一个浏览器对象
driver = webdriver.Chrome()
#driver对象可以通过操作浏览器
driver.get("http://www.baidu.com/")
# 获取页面上的某个标签元素
btn = driver.find_element_by_link_text("新闻")
# print(btn)
# 点击方法 .click()
btn.click()
# 找到输入框,写入内容方法 .send_keys()
input = driver.find_element_by_id("kw")
input.send_keys("赣南王昱珩")
driver.find_element_by_id("su").click()
# 对于爬虫来说,更关注做了某些操作之后得到的网页源码是什么
html = driver.page_source # 获取页面源码
with open("baidu.html",'w',encoding='utf-8') as fp:
fp.write(html)
driver.quit()
- 使用PhantomJS无头操作
from selenium import webdriver
driver =webdriver.PhantomJS()
driver.get("http://www.baidu.com/")
# print(driver.page_source)
# 保存截屏方法 .save_screenshot()
driver.save_screenshot("./baidu.jpg")