??--. selenium,phantomJs

一、有界面:selenium

二、无界面:phantomJs

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

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

=======================================================

一、有界面: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名字查找           +
======================================================

需求一:用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()

需求二:用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()

二、无界面: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'phantomjsaidu.png')
# 查找input输入框
my_input = browser.find_element_by_id('kw')
# 往框里面写文字
my_input.send_keys('美女')
#截屏
browser.save_screenshot(r'phantomjsmeinv.png')
# 查找搜索按钮
button = browser.find_elements_by_class_name('s_btn')[0]
button.click()
browser.save_screenshot(r'phantomjsshow.png')
browser.quit()


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

如果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:UsersBLiDesktop1801day05ziliaochromedriver.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()

四、用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
# 解析,略

原文地址:https://www.cnblogs.com/staff/p/10768498.html