0


用selenium爬取知网信息(五)

总结一下:

十四、Selenium的一些常用语法和方法****

语法/方法

描述

from selenium import webdriver

导入Selenium库

from selenium.webdriver.common.by import By

导入定位策略的枚举类

from selenium.webdriver.support.ui import WebDriverWait

导入等待元素加载的类

from selenium.webdriver.support import expected_conditions as EC

导入等待条件的类

driver = webdriver.Chrome()

创建浏览器对象,可以选择不同的浏览器

driver.get(‘高级检索-中国知网’)

打开指定的URL

driver.find_element(By.ID, ‘element_id’)

查找元素,可以使用不同的定位策略

element.click()

单击元素

element.send_keys(‘文本’)

在元素上输入文本

element.clear()

清空元素内容

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, ‘element_id’)))

等待元素出现

driver.switch_to.window(‘window_name’)

切换到指定窗口

driver.switch_to.frame(‘frame_name’)

切换到指定iframe

driver.execute_script(‘javascript_code’)

执行JavaScript代码

driver.save_screenshot(‘screenshot.png’)

保存屏幕截图

driver.quit()

关闭浏览器并退出驱动程序

十五、选取元素的方法

定位策略

示例

描述

通过ID查找元素

driver.find_element(By.ID, ‘element_id’)

使用元素的ID属性来定位元素。

通过名称查找元素

driver.find_element(By.NAME, ‘element_name’)

使用元素的名称属性来定位元素。

通过标签名查找元素

driver.find_element(By.TAG_NAME, ‘element_tag’)

使用元素的HTML标签名称来定位元素。

通过类名查找元素

driver.find_element(By.CLASS_NAME, ‘element_class’)

使用元素的类名属性来定位元素。

通过CSS选择器查找元素

driver.find_element(By.CSS_SELECTOR, ‘css_selector’)

使用CSS选择器来定位元素。

通过XPath查找元素

driver.find_element(By.XPATH, ‘xpath_expression’)

使用XPath表达式来定位元素。

通过链接文本查找元素

driver.find_element(By.LINK_TEXT, ‘link_text’)

使用链接文本来定位链接元素。

通过部分链接文本查找元素

driver.find_element(By.PARTIAL_LINK_TEXT, ‘partial_link_text’)

使用部分链接文本来定位链接元素。

十六、Selenium**** CSS选择器

CSS选择器是一种用于选择HTML元素的模式。它允许我们根据元素的标签名、类名、ID、属性等属性进行选择。CSS选择器的语法简单而灵活,是前端开发中常用的定位元素的方式。

selenium中的css定位,实际是通过css选择器来定位到具体元素,css选择器来自于css语法。CSS定位有以下显著优点:

1、语法简洁

2、对比其他定位方式,定位效率更快

3、对比其他定位方式,定位更稳定

css选择器语法:

基础选择器

选择器

格式

示例

示例说明

选择全部

选择全部元素

标签选择器

html标签

p

选择所有<p>元素

ID选择器

#id属性值

#su

选择所有id='su'的元素

类选择器

.class属性值

.s_btn

选择所有class='s_btn'的元素

属性选择器1

属性名

type

选择所有带type属性的元素

属性选择器2

属性名='属性值'

type="submit"

选择所有type="submit"的元素

属性选择器3

属性名~='属性值'

type~="submit"

选择所有type包含"submit"的元素

属性选择器4

属性名|='属性值'

type|="submit"

选择所有type以"submit"开头的元素

备注:某些元素属性有多个值(如class属性),值表现为以空格隔开,使用时需要单个取出使用。

组合选择器

组合选择器就是同时使用多个基础选择器,从而更好地筛选出目标元素

选择器

格式

示例

示例说明

标签指定属性

标签加属性描述

input#su

选择所有id='su'的<input>元素

并集

元素1,元素2

div,p

选择所有<div>和<p>元素

父子

元素1>元素2

div>p

选择所有父级是<div>的<p>元素

后代

元素1 元素2

div p

选择<div>中的所有<p>元素

相邻

元素1+元素2

div+p

选择<div>同级后的相邻<p>元素

同级

元素1~元素2

div~p

选择<div>同级后的所有<p>元素

伪属性选择器

伪属性选择器是指元素在html中实际并不存在该属性,是由css定义的拓展描述属性。

选择器

格式

示例

示例说明

唯一子元素

:only-child

p:only-child

选择所有<p>元素且该元素是其父级的唯一一个元素

第一子元素

:first-child

p:first-child

选择所有<p>元素且该元素是其父级的第一个元素

最后子元素

:last-child

p:last-child

选择所有<p>元素且该元素是其父级的最后一个子元素

顺序选择器

:nth-child(n)

p:nth-child(2)

选择所有<p>元素且该元素是其父级的第二个子元素

顺序类型选择器

:nth-of-type(n)

p:nth-of-type(2)

选择所有<p>元素且该元素是其父级的第二个<p>元素

倒序选择器

:nth-last-child(n)

p:nth-last-child(2)

选择所有<p>元素且该元素是其父级的倒数第二个子元素

倒序类型选择器

:nth-last-of-type(n)

p:nth-last-of-type(2)

选择所有<p>元素且该元素是其父级的倒数第二个<p>元素

css常用的定位方式:

通过class定位,一个标签有多个class中间的空格用点代替,通过父标签的父标签定位p,在通过p定位子标签input,通过标签+class定位

项目 Value

#element element: div p 选择div标签元素内部的所有p标签元素

#element>element: div>p 选择父元素为div标签元素的所有p标签元素

#element element: div p div标签元素内部的所有p标签元素

#element>element: div>p 选择父元素为div标签元素的所有p标签元素

#element+element: div+p 选择紧接在div元素之后的所有p元素

#id: #firstname 选择id=‘fistname’的所有元素

#[attritube=value]:[target=_blank] 选择target="_blank"的所有元素

#[attribute]: [target] 选择带有target属性的所有元素

#[attritube=value]:[title=flower] 选择title属性包含单词‘flower’的所有元素

#:first-child p:first-child 选择属于父元素的第一个子元素的每个p标签元素

#[attribute^=value] a[src^=‘https’] 选择其src属性以’https’开头的每个a标签元素

#[attribute= v a l u e ] a [ s r c =value] a[src=value]a[src=’.pdf’] 选择其src属性以’.pdf’结尾的所有a标签元素

#[attribute*=value] a[src*=‘abc’] 选择其src属性包含’abc’子串的每个a标签元素

#:first-of-type p: first-of-type 选择父元素的首个p标签元素的每个p标签元素(所有p标签对应的父标签的第一个子p标签元素)

#:last-of-type p:last-of-type 选择父元素的最后一个p标签元素的每个p标签元素(所有p标签对应的父标签的最后一个子p标签元素)

#:only-of-type p:only-of-type 选择父元素里面唯一的p标签元素的每个p标签元素(所有p标签对应的父标签元素只有一个子p标签元素)

#:nth-child(n) p:nth-child(2) 选择属于父元素的第二个子元素的每个p标签元素(所有的p标签的父标签对应的第二个子标签元素)

#:only-child p:only-child 选择父元素里面只有一个标签的每个p标签元素(父标签里面只有一个p标签)

#:nth-last-child(n) p:nth-last-child(2) 选择属于父元素的倒数第二个子元素的每个p标签元素(所有的p标签的父标签对应的倒数第二个子标签元素)

#:nth-of-type(n) p:nth-of-type(2) 选择属于其父标签元素的第二个p标签的每个p标签元素(所有p标签对应的父标签的第二个p标签元素,也就是这个和p标签平级)

#:nth-last-of-type(n) p:nth-last-of-type(2) 选择属于其父标签元素的倒数第二个p标签的每个p标签元素(所有p标签对应的父标签的倒数第二个p标签元素,也就是这个和p标签平级)

#:last-child p:last-child 选择属于其父标签元素最后一个子元素是p标签的每个p标签元素(父标签的最后一个标签必须是p标签)

十七、selenium 获取href
Selenium是一个常用的自动化测试工具,可用于模拟用户操作浏览器。在Web开发和爬虫中,经常需要从网页中获取链接地址(href),而Selenium提供了各种方式来实现这个目标。 下面看如何使用Selenium的find_element(By.XPATH,‘xpath_expression’ )方法来获取网页中的href属性值。

什么是XPath?
XPath(XML Path Language)是一种用于在XML和HTML文档中定位元素的语言。在Selenium中,我们可以使用XPath来定位网页中的元素,包括链接。 XPath表达式通过路径和表达式来选择元素,常用的表达式包括//选取节点)、@选取属性)等。

使用find_element(By.XPATH,‘xpath_expression’ )获取href(链接地址)的示例代码:

from selenium import webdriver

创建浏览器驱动

driver = webdriver.Chrome()

打开网页

driver.get("高级检索-中国知网")

使用XPath定位链接。使用XPath表达式//a[@href]定位所有包含href属性的链接元素。这个表达式指定了选择所有a标签(链接),并且这些标签包含href属性。

element = driver.find_element(By.XPATH,"//a[@href]") # 获取链接的地址。
href = element.get_attribute("href") # 将获取的地址保存在href变量中。
print(href)

关闭浏览器

driver.quit()

注:本系列文章参考部分网文,并根据调试过程进行了修改和完善,侵删。

标签: selenium python 爬虫

本文转载自: https://blog.csdn.net/m0_60659514/article/details/135922591
版权归原作者 老菜鸟YDZ 所有, 如有侵权,请联系我们删除。

“用selenium爬取知网信息(五)”的评论:

还没有评论