爬虫——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”.任何的网络通信归根 ...
随机推荐
- Linux常用命令-文本查看篇
前言 Linux常用命令中,除了cat还有很多其他用于文本查看的命令.本文将简单介绍一下这些文本查看的命令. 全文本显示--cat cat可能是常用的一个文本查看命令了,使用方法也很简单: cat f ...
- 关于陌生的依赖模块,如withStyles、react-apollo等
有自己不认识的依赖,可参考的学习方式: 1.各大技术分享网站的文章(最快) 2.npm官网下的文档(最全)
- centos7下安装docker(16.docker跨主机存储)
从业务数据的角度看,容器可以分为两类:无状态(stateless)容器和有状态(stateful)容器. 无状态:是指容器在运行的过程中不需要保存数据,每次访问的结果不依赖上一次的访问,比如提供静态页 ...
- 通过JS如何获取IP地址
通过JS获取你真实的外网IP和内网IP,就算开代理也没有用,想想真是太可怕了,还能不能愉快的装逼了! 代码: //get the IP addresses associated with an acc ...
- UVA12265-Selling Land(单调栈)
Problem UVA12265-Selling Land Accept: 137 Submit: 782Time Limit: 3000 mSec Problem Description Inpu ...
- [matlab] 1.拟合
x = [1 2 3 4 5 6 7 8 9 ]; y = [9 7 6 3 -1 2 5 7 20]; p=polyfit(x,y,3); %数字代表拟合函数的阶数 xi=0:0.01:10; yi ...
- 【转】编写微信聊天机器人4《聊天精灵WeChatGenius》:实时获取到微信聊天消息,hook数据库插入操作。
接上篇,使用Xposed来hook微信,找到微信进程:https://blog.csdn.net/weixin_42127613/article/details/81839537 既然已经找到了微信进 ...
- 记一次layui弹框关闭问题
我在博客园记录过layui关于弹框关闭问题,文章为layui关闭弹出层,这次出现了特殊情况,之前是通过layer.closeAll()解决了这个问题,但是这次解决不了.而换成parent.layer. ...
- DataX
#!/bin/bash[ ! -d /opop ] && mkdir /opopcd /opopwget http://192.168.1.129/package/DataX/{jdk ...
- 洛谷 P1605 迷宫
题目链接 https://www.luogu.org/problemnew/show/P1605 题目背景 迷宫 题目描述 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 ...