爬虫学习笔记6——selenium库的简单使用

selenium库可以模拟浏览器打开网页,做到可见即可爬

selenium支持chrome,Firefox,Edge浏览器。

步骤
0.导入相关库

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
import time
from selenium.webdriver import ActionChains
from selenium.common.exceptions import NoSuchElementException

1.声明浏览器对象

browser = webdriver.Chrome()```

2.打开网页

```python
browser.get('https://www.taobao.com')

3.选取节点
selenium提供了选取节点的方法

input = browser.find_element_by_class_name('zu-top-add-question')
logo = browser.find_element_by_id('zh-top-link-logo')
find_element_by_id('id')
find_element_by_class_name('class_name')
find_element_by_xpath()
find_element_by_css_selector()
find_element_by_link_text()
#或者
find_element(By.XX,'XX')

选取多个节点

find_elements(By.XX,'XX')

selenium自带的其他操作
1.节点交互,即点击按钮,在文本框中输入/清楚文本
send_keys(‘iphone’)
clear()
click()

browser.get('https://taobao.com')
input = browser.find_element(By.ID,'q')
input.send_keys('iphone')
time.sleep(1)
input.clear()
input.send_keys('ipad')
button = browser.find_element_by_class_name('search-button')
button.click()

2.动作链,即图标的拖拽

#动作链,如,拖拽操作
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()

3.执行JavaScript
使用execute_script()方法模拟运行javaScript

#执行JavaScript,如,进度条的下拉操作
browser.get('https://www.zhihu.com/explore')
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.execute_script('alert("To Bottom")')

4.获取节点信息:节点自带一些属性,可直接获取

#获取文本值,id,位置,标签名和大小:WenElement节点具有这些属性,可以直接获取
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.id)
print(input.text)
print(input.location)
print(input.tag_name)
print(input.size)

5.切换Frame,父页面内有时含子页面,selenium默认在父页面操作,要操作子页面,需要使用switch_to.frame()方法切换过去,切回来要使用switch_to.parent_frame()方法

browser = webdriver.Chrome()
url = 'http://www.runoob.com/try/try.php?filename-jqueryui-api-droppable'
browser.get(url)
browser.switch_to.frame('iframeResult')
.....
browser.switch_to.parent_frame()

6.前进和后退:back()方法和forward()方法

#前进和后退
browser = webdriver.Chrome()
browser.get('https://www.baidu.com/')
browser.get('https://www.taobao.com')
browser.get('https://www.zhihu.com')
browser.back()
time.sleep(1)
browser.forward()
browser.close()

你可能感兴趣的:(爬虫学习笔记)