杭州网站推广,15个国内互动网站设计欣赏,什么是商城网站,网站开发与维护视频文章目录 四、获取页面元素属性#xff08;一#xff09;get_attribute获取属性#xff08;二#xff09;获取文本#xff08;三#xff09; 获取其他属性 五、页面交互操作#xff08;一#xff09;输入文本 send_keys()#xff08;二#xff09;点击 click()#… 文章目录 四、获取页面元素属性一get_attribute获取属性二获取文本三 获取其他属性 五、页面交互操作一输入文本 send_keys()二点击 click()三清除文本 clear()四回车确认 submit()五单选六多选七下拉框 六、多窗口切换一Frame切换二选项卡切换 四、获取页面元素属性
既然我们有很多方式来定位页面的元素那么接下来就可以考虑获取以下元素的属性了尤其是用Selenium进行网络爬虫的时候。
一get_attribute获取属性
以百度首页的logo为例获取logo相关属性
img hidefocustrue ids_lg_img classindex-logo-src src//www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png width270 height129 onerrorthis.src//www.baidu.com/img/flexible/logo/pc/index.png;this.οnerrοrnull; usemap#mpfrom selenium import webdriver
import time browser webdriver.Chrome()browser.get(rhttps://www.baidu.com) logo browser.find_element_by_class_name(index-logo-src)
print(logo)
print(logo.get_attribute(src))# 关闭浏览器
browser.close()输出
selenium.webdriver.remote.webelement.WebElement (sessione95b18c43a330745af019e0041f0a8a4, element7dad5fc0-610b-45b6-b543-9e725ee6cc5d)
https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png二获取文本
a classtitle-content tag-width c-link c-font-medium c-line-clamp1 hrefhttps://www.baidu.com/s?cl3amp;tnbaidutop10amp;frtop1000amp;wd%E5%90%84%E5%9C%B0%E8%B4%AF%E5%BD%BB%E5%8D%81%E4%B9%9D%E5%B1%8A%E5%85%AD%E4%B8%AD%E5%85%A8%E4%BC%9A%E7%B2%BE%E7%A5%9E%E7%BA%AA%E5%AE%9Eamp;rsv_idx2amp;rsv_dlfyb_n_homepageamp;safyb_n_homepageamp;hisfilter1 target_blankspan classtitle-content-index c-index-single c-index-single-hot11/spanspan classtitle-content-title各地贯彻十九届六中全会精神纪实/span/a
获取热榜的文本用的是text属性直接调用即可
from selenium import webdriver
import time browser webdriver.Chrome()browser.get(rhttps://www.baidu.com) logo browser.find_element_by_css_selector(#hotsearch-content-wrapper li:nth-child(1) a)
print(logo.text)
print(logo.get_attribute(href))# 关闭浏览器
browser.close()输出
1各地贯彻十九届六中全会精神纪实
https://www.baidu.com/s?cl3tnbaidutop10frtop1000wd%E5%90%84%E5%9C%B0%E8%B4%AF%E5%BD%BB%E5%8D%81%E4%B9%9D%E5%B1%8A%E5%85%AD%E4%B8%AD%E5%85%A8%E4%BC%9A%E7%B2%BE%E7%A5%9E%E7%BA%AA%E5%AE%9Ersv_idx2rsv_dlfyb_n_homepagesafyb_n_homepagehisfilter1三 获取其他属性
除了属性和文本值外还有id、位置、标签名和大小等属性。
from selenium import webdriver
import time browser webdriver.Chrome()browser.get(rhttps://www.baidu.com) logo browser.find_element_by_class_name(index-logo-src)
print(logo.id)
print(logo.location)
print(logo.tag_name)
print(logo.size)# 关闭浏览器
browser.close()输出
6af39c9b-70e8-4033-8a74-7201ae09d540
{x: 490, y: 46}
img
{height: 129, width: 270}五、页面交互操作
页面交互就是在浏览器的各种操作比如上面演示过的输入文本、点击链接等等还有像清除文本、回车确认、单选框与多选框选中等。
一输入文本 send_keys()
其实在之前的小节中我们有用过此操作。
from selenium import webdriver
import time browser webdriver.Chrome()
browser.get(rhttps://www.baidu.com)
time.sleep(2)# 定位搜索框
input browser.find_element_by_class_name(s_ipt)
# 输入python
input.send_keys(python)
time.sleep(2)# 关闭浏览器
browser.close()二点击 click()
from selenium import webdriver
import time browser webdriver.Chrome()
browser.get(rhttps://www.baidu.com)
time.sleep(2)# 选中新闻按钮
click browser.find_element_by_link_text(新闻)
# 点击之
click.click()
time.sleep(2)# 关闭浏览器全部页面
browser.quit()三清除文本 clear()
from selenium import webdriver
import time browser webdriver.Chrome()
browser.get(rhttps://www.baidu.com)
time.sleep(2)# 定位搜索框
input browser.find_element_by_class_name(s_ipt)
# 输入python
input.send_keys(python)
time.sleep(2)
# 清除python
input.clear()
time.sleep(2)# 关闭浏览器
browser.close()四回车确认 submit()
比如在搜索框输入文本python然后回车就出查询操作结果的情况。
from selenium import webdriver
import time browser webdriver.Chrome()
browser.get(rhttps://www.baidu.com)
time.sleep(2)# 定位搜索框
input browser.find_element_by_class_name(s_ipt)
# 输入python
input.send_keys(python)
time.sleep(2)
# 回车查询
input.submit()
time.sleep(5)# 关闭浏览器
browser.close()五单选
单选比较好操作先定位需要单选的某个元素然后点击一下即可。
六多选
多选好像也比较容易依次定位需要选择的元素点击即可。
七下拉框
下拉框的操作相对复杂一些需要用到Select模块。
from selenium.webdriver.support.select import Select1、三种选择某一选项项的方法select_by_index() # 通过索引定位注意index索引是从“0”开始。
select_by_value() # 通过value值定位value标签的属性值。
select_by_visible_text() # 通过文本值定位即显示在下拉框的值。2、三种返回options信息的方法options # 返回select元素所有的options
all_selected_options # 返回select元素中所有已选中的选项
first_selected_options # 返回select元素中选中的第一个选项 3、四种取消选中项的方法deselect_all # 取消全部的已选择项
deselect_by_index # 取消已选中的索引项
deselect_by_value # 取消已选中的value值
deselect_by_visible_text # 取消已选中的文本值六、多窗口切换
比如同一个页面的不同子页面的节点元素获取操作不同选项卡之间的切换以及不同浏览器窗口之间的切换操作等等。
一Frame切换
Selenium打开一个页面之后默认是在父页面进行操作此时如果这个页面还有子页面想要获取子页面的节点元素信息则需要切换到子页面进行擦走这时候switch_to.frame()就来了。如果想回到父页面用switch_to.parent_frame()即可。
二选项卡切换
我们在访问网页的时候会打开很多个页面在Selenium中提供了一些方法方便我们对这些页面进行操作。
current_window_handle获取当前窗口的句柄。
window_handles返回当前浏览器的所有窗口的句柄。
switch_to_window()用于切换到对应的窗口。from selenium import webdriver
import timebrowser webdriver.Chrome()# 打开百度
browser.get(http://www.baidu.com)
# 新建一个选项卡
browser.execute_script(window.open())
print(browser.window_handles)
# 跳转到第二个选项卡并打开知乎
browser.switch_to.window(browser.window_handles[1])
browser.get(http://www.zhihu.com)
# 回到第一个选项卡并打开淘宝原来的百度页面改为了淘宝
time.sleep(2)
browser.switch_to.window(browser.window_handles[0])
browser.get(http://www.taobao.com)