用selenium爬取知网信息(五)

这篇具有很好参考价值的文章主要介绍了用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()

注:本系列文章参考部分网文,并根据调试过程进行了修改和完善,侵删。文章来源地址https://www.toymoban.com/news/detail-829680.html

到了这里,关于用selenium爬取知网信息(五)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于文章《爬取知网文献信息》中代码的一些优化

    哈喽大家好,我是咸鱼   之前写了一篇关于文献爬虫的文章 Python爬虫实战(5) | 爬取知网文献信息   文章发布之后有很多小伙伴给出了一些反馈和指正,在认真看了小伙伴们的留言之后,咸鱼对代码进行了一些优化   优化的代码在文末,欢迎各位小伙伴给出意见和指正   p

    2023年04月27日
    浏览(41)
  • 爬虫与数据分析项目实战2.1 Selenium爬取Boss招聘信息

    完成: 1.爬取信息 2.基于爬取结果筛选符合条件的信息    岗位名称、薪资、岗位要求、地区、公司名称、公司规模、细节链接 3.筛选base杭州的岗位保存到csv文件中 But容易出现网络不稳定造成的无法定位元素所在位置的情况,小范围爬取可以 4.基于csv分析后续

    2024年02月08日
    浏览(33)
  • python网络爬虫之selenium的详细安装配置以及简单使用--菜鸟复习日记

     学习python selenium已经是好久以前的事情了,自己都快要忘记了,所以写篇博客复习复习,本文包括安装selenium驱动以及selenium的一些简单使用。本文默认安装python以及selenium库。 目录 一、安装seleium的驱动(以谷歌浏览器为例) 二、selenium库的一些简单用法。         1.向输入框

    2024年02月06日
    浏览(30)
  • 【python爬虫】——历史天气信息爬取

    在2345天气信息网2345天气网 依据 地点 和 时间 对相关城市的历史天气信息进行爬取。 网页使用get方式发送请求,所需参数包括areaInfo[areaId]、areaInfo[areaType]、date[year]、date[month],分别为城市id、城市类型,年、月。

    2024年02月07日
    浏览(44)
  • python爬虫实战 scrapy+selenium爬取动态网页

    最近学习了scrapy爬虫框架,想要找个目标练练手。由于现在很多网页都是动态的,因此还需要配合selenium爬取。本文旨在记录这次学习经历,如有疑问或不当之处,可以在评论区指出,一起学习。 对scrapy不了解的同学可以阅读这篇文章 爬虫框架 Scrapy 详解,对scrapy框架介绍的

    2024年02月07日
    浏览(62)
  • Python爬虫|使用Selenium轻松爬取网页数据

    1. 什么是selenium? Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作浏览器一样。支持的浏览器包括IE,Firefox,Safari,Chrome等。 Selenium可以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用

    2024年02月04日
    浏览(40)
  • 【爬虫系列】Python爬虫实战--招聘网站的职位信息爬取

    1. 需求分析 从网上找工作,大家一般都会通过各种招聘网站去检索相关信息,今天利用爬虫采集招聘网站的职位信息,比如岗位名称,岗位要求,薪资,公司名称,公司规模,公司位置,福利待遇等最为关心的内容。在采集和解析完成后,使用 Excel 或 csv 文件保存。 2. 目标

    2024年02月02日
    浏览(39)
  • Python爬虫实战:selenium爬取电商平台商品数据(1)

    def index_page(page): “”\\\" 抓取索引页 :param page: 页码 “”\\\" print(‘正在爬取第’, str(page), ‘页数据’) try: url = ‘https://search.jd.com/Search?keyword=iPhoneev=exbrand_Apple’ driver.get(url) if page 1: input = driver.find_element_by_xpath(‘//*[@id=“J_bottomPage”]/span[2]/input’) button = driver.find_element_by_xpath(‘

    2024年04月28日
    浏览(33)
  • python 使用selenium等爬虫技术爬取某华网

    本程序可以根据时间要求获取某华网上不同模块的新闻内容,时间要求包括设置截止日期,以及时间间隔,比如说获取距离2023-04-20一天以内的新闻。主要使用了selenium有关的爬虫技术,具体实现如下: 目录 目录 一、SpiderXinhua类的基础属性 二、日期获取与格式转换的函数ti

    2024年01月16日
    浏览(27)
  • Python爬虫入门系列之Selenium实现动态页面爬取

    在前一篇博客中,我们学习了如何使用多线程优化爬虫程序。但是,如果要爬取的网页是动态生成的或者包含大量JavaScript代码,单纯的静态页面爬取就不足够了。为了解决这个问题,我们可以使用Selenium库来模拟真实的浏览器行为,从而实现动态页面的爬取。 Selenium是一个用

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包