python爬虫之Selenium库(九)

Selenium概念

在这里插入图片描述

声明浏览器对象

from selenium import webdriver
browser=webdriver.Chrome()//主要使用这个
browser=webdriver.Firefox()
browser=webdriver.Edge()
browser=webdriver.PhantomJS()
browser=webdriver.Safari()

访问页面

from selenium import webdriver
browser=webdriver.Chrome()
browser.get("https://www.taobao.com")#访问淘宝
print(browser.page_source)#打印淘宝页面代码
browser.close()

查找元素

单个元素
from selenium import webdriver
browser=webdriver.Chrome()
browser.get("https://www.taobao.com")
input_frist=browser.find_element_by_id("q")
#等价于
inpu=browser.find_element(By.ID,'q')
input_seconde=browser.find_element_by_css_selector('#q')
print(input_frist,input_seconde)
browser.close()

打印结果:

<selenium.webdriver.remote.webelement.WebElement (session=“7e58f28f589e2324bfb7cbabeaeafaa4”, element=“0.3069550050232459-1”)> <selenium.webdriver.remote.webelement.WebElement (session=“7e58f28f589e2324bfb7cbabeaeafaa4”, element=“0.3069550050232459-1”)> <selenium.webdriver.remote.webelement.WebElement (session=“7e58f28f589e2324bfb7cbabeaeafaa4”, element=“0.3069550050232459-1”)>

查找多个元素
from selenium import webdriver
browser=webdriver.Chrome()
browser.get("https://www.taobao.com")
input_seconde=browser.find_elements_by_css_selector('.service-bd li')
input_frist=browser.find_elements(By.CSS_SELECTOR,'.service-bd li')
print(input_frist,inpu,input_seconde)
browser.close()

元素交互操作

from selenium import webdriver
import time
browser=webdriver.Chrome()
browser.get("https://www.taobao.com")
input=browser.find_element_by_id('q')
input.send_keys('iPhone')#先输入iphone
time.sleep(1)#停顿等待
input.clear()#清空输入框
input.send_keys('iPad')#输入iPad
button=browser.find_element_by_class_name('btn-search')
button.click()#点击搜索按钮,进行搜索

input=browser.find_element_by_id(‘q’)
q就是在代码中搜索框中的name的值
在这里插入图片描述

button=browser.find_element_by_class_name(‘btn-search’)
btn-search是搜索按钮的class值
在这里插入图片描述

执行JavaScript

from selenium import webdriver

browser=webdriver.Chrome()
browser.get("https://www.taobao.com")
browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")
browser.execute_script('alter("To Bottom")')

将淘宝页面的滚动条进行向下移动,并弹出To Bottom提示

获取元素信息

获取属性
from selenium import webdriver
from selenium.webdriver import ActionChains
browser=webdriver.Chrome()
url='https://www.zhihu.com/explore'
browser.get(url)
logo=browser.find_element_by_id('zh-top-link-logo')#现在知乎改版了,具体的id不清楚
print(logo)
print(logo.get_attribute('class'))
获取文本
from selenium import webdriver
from selenium.webdriver import ActionChains
browser=webdriver.Chrome()
url='https://www.zhihu.com/explore'
browser.get(url)
logo=browser.find_element_by_name('zh-top-link-logo')#现在知乎改版了,具体的name不清楚
print(logo)
print(logo.get_attribute('class'))
获取id,位置,标签名,大小,
from selenium import webdriver
browser=webdriver.Chrome()
url='https://www.zhihu.com/explore'
browser.get(url)
input=browser.find_element_by_class_name('ExploreHomePage-specialsLoginTitle')
print(input.id)# 获取id
print(input.location)#获取位置
print(input.tag_name)#获取标签名
print(input.size)#获取大小

在这里插入图片描述

等待

隐式等待

from selenium import webdriver
browser=webdriver.Chrome()
browser.implicitly_wait(10)#如果网速慢了,就会额外增加10秒进行等待
url='https://www.zhihu.com/explore'
browser.get(url)
input=browser.find_element_by_class_name('zu-top-add-question')
显式等待

在这里插入图片描述

前进后退

import time
from selenium import webdriver
browser=webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.get("https://www.taobao.com/")
browser.get("https://www.python.org/")
browser.back()
time.sleep(1)
browser.forward()
browser.close()

异常处理

在这里插入图片描述

发布了63 篇原创文章 · 获赞 12 · 访问量 4042

猜你喜欢

转载自blog.csdn.net/qq_45353823/article/details/104268439