【爬虫】Selenium的基础使用

selenium:

作用:可以模拟真实浏览器,是web自动化测试工具,支持多种浏览器

官方文档:http://selenium-python.readthedocs.io/index.html
使用前:
1、安装驱动
2、放入环境变量或Anaconda的Script文件夹或者手动输入驱动的path

from selenium import webdriver
    options=webdriver.ChromeOptions()
    options.add_argument('User-Agent="xxx"')#添加User-Agent
    driver=webdriver.Chrome(chrome_options=options)
    driver.get('http://www.baidu.com')

1、模拟提交

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
element=driver.find_element_by_name('wd')#找到搜索框
element.send_keys('python')#在搜索框输入python
#下面两句二选一
element.send_keys(Keys.RETURN)#利用键盘事件(方法一)
elem2=driver.find_element_by_id('su').click()#利用鼠标事件点击搜索(方法二)
print(driver.page_source)#打印源码

2、元素选取

a.单个元素选取
find_element_by_id  #通过id属性查找
find_element_by_name  #通过name属性查找
find_element_by_class_name #通过class_name查找
find_element_by_link_text #通过链接文本查找
find_element_by_partial_link_text #通过链接的部分文本查找
find_element_by_tag_name  #通过标签名查找
find_element_by_css_selector('#td')  #通过css选择器查找
find_element_by_xpath  #通过xpath语句查找
b.多个元素选取
find_elements_by_id  #通过id属性查找
find_elements_by_name  #通过name属性查找
find_elements_by_class_name #通过class_name查找
find_elements_by_link_text #通过链接文本查找
find_elements_by_partial_link_text #通过链接的部分文本查找
find_elements_by_tag_name  #通过标签名查找
find_elements_by_css_selector('#td')  #通过css选择器查找
find_elements_by_xpath  #通过xpath语句查找
c.通过by类
from selenium.webdirver.common.by import By
driver.find_element(By.xpath,'//dd/text()')
driver.find_elements(By.xpath,'//dd/text()')
d.获取属性
from selenium import webdriver
browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'
browser.get(url)
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.id)
print(input.location)
print(input.tag_name)
print(input.size)
print(input.text)
print(input.get_attribute('class'))

3、界面交互

page = driver.find_elements_by_xpath("//div[@class='page']")
driver.execute_script('arguments[0].scrollIntoView();', page[-1])#拖动到可见的元素去

#将动作附加到动作链中串行执行
browser = webdriver.Chrome()
url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
browser.get(url)
browser.switch_to.frame('iframeResult')
source = browser.find_element_by_css_selector('#draggable')
target = browser.find_element_by_css_selector('#droppable')
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
actions.perform()
browser.close()

4、键鼠事件

#键盘事件
send_keys(Keys.BACKSPACE)	删除键(BackSpace)
send_keys(Keys.SPACE)	空格键(Space)
send_keys(Keys.TAB)	制表键(Tab)
send_keys(Keys.ESCAPE)	回退键(Esc)
send_keys(Keys.ENTER)	回车键(Enter)
send_keys(Keys.CONTROL,'a')	全选(Ctrl+A)
send_keys(Keys.CONTROL,'c')	复制(Ctrl+C)
#鼠标事件
context_click() # 右击
double_click() # 双击
drag_and_drop() # 拖拽
move_to_element() # 鼠标停在一个元素上
click_and_hold() # 按下鼠标左键在一个元素上

5、浏览器操作

# 浏览器打开网址
driver.get("https://www.baidu.com")
# 浏览器最大化
driver.maximize_window()
# 设置浏览器的高度为800像素,宽度为480像素
driver.set_window_size(480, 800)
# 浏览器后退
driver.back()
# 浏览器前进
driver.forward()
# 浏览器关闭
driver.close()
# 浏览器退出
driver.quit()
6、选项卡操作
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
browser.execute_script('window.open()')#新建一个选项卡
browser.switch_to_window(browser.window_handles[0])#转到第一个选项卡
browser.get('https://www.taobao.com')
browser.switch_to_window(browser.window_handles[1])#转到第二个选项卡
browser.get('https://python.org')
7、cookies操作
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
browser.add_cookie({'name': 'name', 'domain': 'www.zhihu.com', 'value': 'zhaofan'})
print(browser.get_cookies())
browser.delete_all_cookies()
8、异常处理
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
browser = webdriver.Chrome()
try:
    browser.get('https://www.baidu.com')
except NoSuchElementException:
    print('No Element')
finally:
    browser.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值