爬虫——selenium基础
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基础的更多相关文章
- 【Python爬虫】selenium基础用法
selenium 基础用法 阅读目录 初识selenium 基本使用 查找元素 元素互交操作 执行JavaScript 获取元素信息 等待 前进后退 Cookies 选项卡管理 异常处理 初识sele ...
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...
- [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒
前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...
- Python+Selenium基础入门及实践
Python+Selenium基础入门及实践 32018.08.29 11:21:52字数 3220阅读 23422 一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 ...
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...
- python爬虫---selenium库的用法
python爬虫---selenium库的用法 selenium是一个自动化测试工具,支持Firefox,Chrome等众多浏览器 在爬虫中的应用主要是用来解决JS渲染的问题. 1.使用前需要安装这个 ...
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍
这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~同时CSDN总是屏蔽这篇文章,再加上最近 ...
- Python 爬虫四 基础案例-自动登陆github
GET&POST请求一般格式 爬取Github数据 GET&POST请求一般格式 很久之前在讲web框架的时候,曾经提到过一句话,在网络编程中“万物皆socket”.任何的网络通信归根 ...
随机推荐
- windows入侵
一, ping 用来检查网 络是否通畅或者网络连接速度的命令.作为一个生 活在网络上的管理员或者黑 客来说, ping 命令是第一个必须掌握的 DOS 命令,所利用的原理是这样的网络上的机器都有唯一确 ...
- python3内置函数练习
1. abs() abs() 函数返回数字的绝对值. print(abs(1.5236)) # 1.5236 print(abs(1.0)) # 1.0 2. all() all() 函数用于判断给定 ...
- 【Teradata】gtwglobal查看
使用root登录TD数据库节点 cnsterm 6 start gtwglobal cnsterm 3 //上一个命令的window编号 h //帮助 QUIT //退出
- AJAX问题 XMLHttpRequest.status = 0是什么含义
在调用AJAX的时候遇到了XMLHttpRequest. status为0 的情况,http协议里可是没这个状态码的,众所周知,XMLHttpRequest. Status为HTTP请求状态码,一般为 ...
- 转://Oracle中User和Schema的区别和联系
今天在阅读Oracle官方文档的时候,读到schema的基本概念,这就让我产生了一个疑问:user和schema两者之间到底有什么区别?为了更深层次的理解二者之间的区别和联系,以下是官方文档中关于us ...
- P2690 接苹果(暴力搜索+记忆化)
思路: 建树:就是在每一分钟进行分枝,是原地不动,还是移动.然后,走完整个过程. 但是,我其实还是走了弯路,因为,最开始想的是剪枝,没有用记忆化搜索.但是,肯定是能用dp来做,啊啊啊啊阿,能用dp肯定 ...
- JS学习实践(1) JavaScript 修改图像灯泡
修改灯泡 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- jenkins使用1----初始化设置
####一.基本设置 1.首先找到系统管理 2.再找到全局配置一把黄色的锁头 3.新增JDK.Maven等 别名随便 下面的值添加jdk在jenkins这台机器上的位置,如果没找到可以点击自动安装,并 ...
- Luogu3605 [USACO17JAN]Promotion Counting晋升者计数
Luogu3605 [USACO17JAN]Promotion Counting晋升者计数 给一棵 \(n\) 个点的树,点 \(i\) 有一个权值 \(a_i\) .对于每个 \(i\) ,求 \( ...
- redis为什么这么火该怎么用
最近一些人在介绍方案时,经常会出现redis这个词,于是很多小伙伴百度完redis也就觉得它是一个缓存,然后项目里面把数据丢进去完事,甚至有例如将实体属性拆分塞进redis hash里面的奇怪用法等等 ...