Selenium,自动化浏览器技术。主要用于web应用自动测试和自动完成web基本任务管理。
官方网站:https://selenium-python.readthedocs.io/getting-started.html #使用selecnuim访问指定网页并打印相关信息
from selenium import webdriver browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.get("https://cn.bing.com/?mkt=zh-CN&mkt=zh-CN")
print(browser.current_url) #浏览器当前请求路径
print(browser.get_cookies()) #cookei信息
print(browser.page_source) #网页源代码
browser.close()
#通过指定方法获取单个元素
from selenium import webdriver browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.get("https://www.taobao.com")
one = browser.find_element_by_id('q')
two = browser.find_element_by_css_selector('#q')
three = browser.find_element_by_xpath('//*[@id="q"]') #路径表达式
print(one)
print(two)
print(three)
browser.close()
#通过指定方法查找多个元素
from selenium import webdriver browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.get("https://www.taobao.com")
list = browser.find_elements_by_css_selector('#q')
print(list)
browser.close()
#通过指定参数的方法查找多个元素
from selenium import webdriver
from selenium.webdriver.common.by import By browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.get("https://www.taobao.com")
list = browser.find_elements(By.CSS_SELECTOR,'.service-bd li')
print(list)
browser.close()
通过指定参数获取单个元素
from selenium import webdriver
from selenium.webdriver.common.by import By browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.get("https://www.taobao.com")
one = browser.find_elements(By.ID,'q')
print(one)
browser.close()
#模拟用户操作浏览器
from selenium import webdriver
import time browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.get('https://www.taobao.com')
input = browser.find_element_by_id('q') #获取搜索框对象
input.send_keys('华为') #输入‘华为’
time.sleep() #暂停一秒
input.clear() #清楚搜索框
input.send_keys('小米') #再次搜索
button = browser.find_element_by_class_name('btn-search') #获取按钮对象
button.click() #点击按钮
'''
等待加载技术,获取DOM元素时,若浏览器本身没有加载完毕,python代码运行就会报错。
因此使用等待的方法,在指定时间内进行等待,超时就报出异常。
'''
#隐式等待(全局等待),当DOM元素没有出现时,过N秒之后再查找。N默认值为0;
from selenium import webdriver browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.implicitly_wait()#等待十秒加载不出来就会抛出异常,10秒内加载出来正常返回
browser.get('https://www.zhihu.com/explore')
input = browser.find_element_by_class_name('zu-top-add-question')
print(input)
#显式等待(智能等待),设置等待时间和等待条件
from selenium import webdriver

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.get('https://www.taobao.com/')
wait = WebDriverWait(browser, 10)
input = wait.until(EC.presence_of_element_located((By.ID, 'q')))#10秒内id为q的元素被加载出来
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.btn-search')))#10秒内按钮可以点击
print(input, button)
'''
title_is 标题是某内容
title_contains 标题包含某内容
presence_of_element_located 元素加载出,传入定位元组,如(By.ID, 'p')
visibility_of_element_located 元素可见,传入定位元组
visibility_of 可见,传入元素对象
presence_of_all_elements_located 所有元素加载出
text_to_be_present_in_element 某个元素文本包含某文字
text_to_be_present_in_element_value 某个元素值包含某文字
frame_to_be_available_and_switch_to_it frame加载并切换
invisibility_of_element_located 元素不可见
element_to_be_clickable 元素可点击
staleness_of 判断一个元素是否仍在DOM,可判断页面是否已经刷新
element_to_be_selected 元素可选择,传元素对象
element_located_to_be_selected 元素可选择,传入定位元组
element_selection_state_to_be 传入元素对象以及状态,相等返回True,否则返回False
element_located_selection_state_to_be 传入定位元组以及状态,相等返回True,否则返回False
alert_is_present 是否出现Alert
'''
#页面的后退和关闭
import time
from selenium import webdriver browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.get('https://www.baidu.com/')
browser.get('https://www.taobao.com/')
browser.get('https://www.python.org/')
browser.back() #后退
time.sleep()
browser.forward() #前进
browser.refresh() #刷新
browser.close() #关闭当前窗口
browser.quit() #关闭所有窗口

import time
from selenium import webdriver browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.get('https://www.baidu.com')
browser.execute_script('window.open()') #新增选项卡
print(browser.window_handles) #获取所有窗口的句柄,句柄就是每个窗口的标识,想要获取某个窗口的资源就必须先拿到他的句柄。
browser.switch_to.window(browser.window_handles[]) #切换到句柄为 browser.window_handles[1]的窗口,也就是第二个窗口
browser.get('https://www.taobao.com')
time.sleep()
browser.switch_to.window(browser.window_handles[]) #切换到第一个窗口
browser.get('http://www.fishc.com')
#异常处理
#在写代码的时候某些报错不够明确,所有可以借助selenium来进行异常处理
#原文
from selenium import webdriver browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.get('https://www.baidu.com')
browser.find_element_by_id('hello') #增加异常处理
from selenium import webdriver

browser = webdriver.Chrome(r"D:\工具包\chromedriver.exe")
browser.get('https://www.baidu.com')
browser.find_element_by_id('hello') from selenium import webdriver
from selenium.common.exceptions import TimeoutException, NoSuchElementException browser =webdriver.Chrome(r"D:\工具包\chromedriver.exe")
try:
browser.get('https://www.baidu.com')
except TimeoutException:
print('Time Out')
try:
browser.find_element_by_id('hello')
except NoSuchElementException:
print('No Element')
finally:
browser.close()
 

爬虫——selenium基础的更多相关文章

  1. 【Python爬虫】selenium基础用法

    selenium 基础用法 阅读目录 初识selenium 基本使用 查找元素 元素互交操作 执行JavaScript 获取元素信息 等待 前进后退 Cookies 选项卡管理 异常处理 初识sele ...

  2. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  3. [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论

    前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...

  4. [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...

  5. Python+Selenium基础入门及实践

    Python+Selenium基础入门及实践 32018.08.29 11:21:52字数 3220阅读 23422 一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 ...

  6. [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

    转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...

  7. python爬虫---selenium库的用法

    python爬虫---selenium库的用法 selenium是一个自动化测试工具,支持Firefox,Chrome等众多浏览器 在爬虫中的应用主要是用来解决JS渲染的问题. 1.使用前需要安装这个 ...

  8. [python爬虫] Selenium常见元素定位方法和操作的学习介绍

    这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~同时CSDN总是屏蔽这篇文章,再加上最近 ...

  9. Python 爬虫四 基础案例-自动登陆github

    GET&POST请求一般格式 爬取Github数据 GET&POST请求一般格式 很久之前在讲web框架的时候,曾经提到过一句话,在网络编程中“万物皆socket”.任何的网络通信归根 ...

随机推荐

  1. 枚举应用demo

    package com.xx; public enum PositionEM{ ONE(1,"领导"), TWO(2,"员工"); private Long v ...

  2. IntelliJ IDEA 创建Spring+SpringMVC+hibernate+maven项目

    第一步: 新建maven管理的web项目, 具体步骤参考:http://www.cnblogs.com/gczmn/p/8693734.html 第二步: 创建项目结构, 完整项目结构如下: 第三步: ...

  3. Vue使用枚举类型实现HTML下拉框

    下拉框包含option中的Value和用来显示的选项, 一般后台都是使用的Value值,而不是显示在前台的选项 第一步: 编写下拉框需要的枚举类型 StatusEnum.java public enu ...

  4. java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)

    1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...

  5. 20个必不可少的Python库

    转载:http://www.python123.org/tutorials/58b41f2a28c8f30100bd41dc 读者们好.今天我将介绍20个属于我常用工具的Python库,我相信你看完之 ...

  6. 【项目 · Wonderland】会议一 · 可达鸭

    [软件工程实践 · 团队项目] 第一次作业 Part 0 · 简 要 目 录 Part 1 · 队 伍 阵 容 Part 2 · 会 议 记 录 相 关 Part 3 · 会 议 讨 论 记 录 Pa ...

  7. 日常训练 dfs 之 拓扑排序

    今天被拓扑排序给折磨了一天,主要就是我的一个代码有点小bug,真难找... 先来看看我今天写的题目吧! C. Fox And Names Fox Ciel is going to publish a ...

  8. Codeforces Round #542 B Two Cakes

    B. Two Cakes time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  9. Spark大数据平台安装教程

    一.Spark介绍 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.Spark是开源的类Hadoop MapReduce的通用并行框架,Spark拥有Hadoop MapRe ...

  10. 真正的Maven经常使用命令

    长期用Eclipse的Maven插件的小伙伴可能接触Maven的经常使用命令比較少.每次用每次翻文档. 假设让你脱离Eclipse怎么办,面试的时候考到了怎么办-- 假设你不想尴尬,请小朋友花点时间运 ...