??--. selenium,phantomJs

1、有界面:selenium

2、无界面:phantomJs

3、无界面:谷歌无头浏览器

4、用phantomJ实现动态加载数据效果

=======================================================html

1、有界面:selenium

selenum:三方库。能够实现让浏览器完成自动化的操做。用代码实现拖动滚轮,点击鼠标等
环境搭建
  1.安装:pip install selenium
  2.获取浏览器的驱动程序:
    谷歌浏览器驱动下载地址:http://chromedriver.storage.googleapis.com/index.html
    驱动版本与浏览器版本对照表:http://blog.csdn.net/huilan_same/article/details/51896672
查找节点方法:
======================================================
#使用下面的方法,查找指定的元素                      +
find_element_by_id 根据id找节点                    +
find_elements_by_name 根据name找                  +
find_elements_by_xpath 根据xpath查找                 +
find_elements_by_tag_name 根据标签名找                 +
find_elements_by_class_name 根据class名字查找           +
======================================================web

需求一:用selenium实现-打开百度,输入"美女",点击"搜索",关闭浏览器
from selenium import webdriver
from time import sleep
#建立浏览器对象,经过该对象能够操做浏览器,记得前面加r'','r'是防止字符转义的
bro = webdriver.Chrome(executable_path = r'驱动路径')
#使用浏览器发起get请求打开百度
bro.get("http://www.baidu.com")
#让百度进行指定词条的搜索
text = bro.find_element_by_id('kw') #定位到了text文本框
text.send_keys('美女') # 向文本框中录入指定内容
button = bro.find_element_by_id('su') # 获取“百度一下”按钮
button.click() # 点击操做
bro.quit()chrome

需求二:用selenium实现--操做设置按钮
from selenium import webdriver
bro = webdriver.Chrome(executable_path = r'驱动路径')
# 查找页面的“设置”选项,并进行点击
bro.find_elements_by_link_text('设置')[0].click()
# 打开设置后找到“搜索设置”选项,设置为每页显示50条
bro.find_elements_by_link_text('搜索设置')[0].click()
# 选中每页显示50条
m = bro.find_element_by_id('nr')
m.find_element_by_xpath('//*[@id="nr"]/option[3]').click()
m.find_element_by_xpath('.//option[3]').click()
# 点击保存设置
bro.find_elements_by_class_name("prefpanelgo")[0].click()
# 处理弹出的警告页面 肯定accept() 和 取消dismiss()
bro.switch_to_alert().accept()
# 在打开的页面中找到“Selenium - 开源中国社区”,并打开这个页面
driver.find_elements_by_link_text('美女_百度图片')[0].click()
# 关闭浏览器
driver.quit()
api

 

2、无界面:phantomJs

PhantomJS是一款无界面的浏览器,其自动化操做流程和上述操做谷歌浏览器是一致的。
因为是无界面的,为了可以展现自动化操做流程,PhantomJS为用户提供了一个截屏的功能,使用save_screenshot函数实现。浏览器


需求1:用phantomJs实现--打开浏览器,输入“美女”,点击“搜索”,关闭浏览器
from selenium import webdriver
# phantomjs建立浏览器
browser = webdriver.PhantomJS(executable_path = r'PhantomJS驱动路径')
# 打开百度
browser.get("http://www.baidu.com/")
browser.save_screenshot(r'phantomjs\baidu.png')
# 查找input输入框
my_input = browser.find_element_by_id('kw')
# 往框里面写文字
my_input.send_keys('美女')
#截屏
browser.save_screenshot(r'phantomjs\meinv.png')
# 查找搜索按钮
button = browser.find_elements_by_class_name('s_btn')[0]
button.click()
browser.save_screenshot(r'phantomjs\show.png')
browser.quit() less


3、无界面:谷歌无头浏览器

若是phantomJs不能用,能够使用这个。函数

Demo:实现打开百度,而后退出
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 建立一个参数对象,用来控制chrome以无界面模式打开
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# 驱动路径
path = r'C:\Users\ZBLi\Desktop\1801\day05\ziliao\chromedriver.exe'
# 建立浏览器对象
browser = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)
# 上网
url = 'http://www.baidu.com/'
browser.get(url)
browser.save_screenshot('baidu.png')
browser.quit()ui

 

4、用phantomJ实现动态加载数据效果

需求:获取豆瓣电影中动态加载出更多电影详情数据,拖动滚轮到底部,会加载更多电影数据
from selenium import webdriver
bro = webdriver.PhantomJs(executable_path = r'驱动路径')
#使用浏览器发起get请求打开豆瓣电影分类
bro.get("https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&type=24&interval_id=100:90&action=")
# 编写js代码,让页面中的滚轮滑动到底部
js = 'window.scrollTo(0,document.body.scrollHeight)'
# 让浏览器执行js代码
bro.execute_script(js)
# 获取加载数据后的页面:page_source获取浏览器当前页面数据,即滚轮拖动
page_text = bro.page_source
# 解析,略google

相关文章
相关标签/搜索