BS4提取chrome.webdriver方法和属性以及描述并输出到Excel

2024-03-21 06:04

本文主要是介绍BS4提取chrome.webdriver方法和属性以及描述并输出到Excel,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BS4网络提取selenium.chrome.WebDriver类的方法及属性
chrome.webdriver: selenium.webdriver.chrome.webdriver — Selenium 4.18.1 documentation

class selenium.webdriver.chrome.webdriver.WebDriver 是 Selenium 中用于操作 Chrome 浏览器的 WebDriver 类。WebDriver 类是 Selenium 提供的一个关键类,用于驱动浏览器执行各种操作,比如打开网页、查找元素、模拟用户操作等

通过使用 selenium.webdriver.chrome.webdriver.WebDriver 类,结合其他 Selenium 提供的方法和类,可以实现自动化测试、网页数据抓取等功能。Chrome WebDriver 是针对 Chrome 浏览器的驱动程序,可以与 Chrome 浏览器无缝集成,实现对浏览器的控制和操作。

提取信息截图:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import reurl = "https://www.selenium.dev/selenium/docs/api/py/webdriver_chrome/selenium.webdriver.chrome.webdriver.html#module-selenium.webdriver.chrome.webdriver"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')data = []# 提取方法
methods = soup.find_all('dl', class_='method')
for method in methods:name = method.find('dt').find('code').text.strip()description = method.find('dd').text.strip()description = re.sub(r'\n\s*\n', '\n', description)  # 使用正则表达式删除多余的空行data.append(['Method', name, description])# 提取属性
# 正则表达式r'\n\s*\n'的含义是:
# \n: 匹配换行符。
# \s*: 匹配零个或多个空白字符(空格、制表符等)。
# \n: 再次匹配换行符。
# 整个正则表达式r'\n\s*\n'用来匹配连续出现的多个换行符,并且中间可以包含任意数量的空白字符。
# 这样就可以将连续的多个空行替换为单个换行符,从而实现删除多余空行的效果。
# 在代码中的使用是为了确保描述信息中不会出现多个连续的空行,而只保留一个换行符作为段落分隔。attributes = soup.find_all('dl', class_='attribute')
for attribute in attributes:name = attribute.find('dt').find('code').text.strip()description = attribute.find('dd').text.strip()description = re.sub(r'\n\s*\n', '\n', description)  # 使用正则表达式删除多余的空行data.append(['Attribute', name, description])# 将数据存储到DataFrame中
df = pd.DataFrame(data, columns=['Type', 'Name', 'Description'])# 将数据写入Excel文件
excel_file = "methods_attributes.xlsx"
df.to_excel(excel_file, index=False)

正则表达式r'\n\s*\n'的含义是:
\n: 匹配换行符。
\s*: 匹配零个或多个空白字符(空格、制表符等)。
\n: 再次匹配换行符。
整个正则表达式r'\n\s*\n'用来匹配连续出现的多个换行符,并且中间可以包含任意数量的空白字符。
这样就可以将连续的多个空行替换为单个换行符,从而实现删除多余空行的效果。
在代码中的使用是为了确保描述信息中不会出现多个连续的空行,而只保留一个换行符作为段落分隔。

-------------------------------
基础知识:
# 当使用 BeautifulSoup 的 find_all() 方法进行查找时,可以结合多种条件和技巧来定位和提取需要的元素。
# 以下是归纳的一些常见的 find_all() 查找方式:
# 按标签名查找:soup.find_all('tag_name')
# 按类名查找:soup.find_all(class_='class_name')
# 按 id 查找:soup.find_all(id='element_id')
# 按属性查找:soup.find_all(attrs={'attribute': 'value'})
# 结合多个条件查找:soup.find_all('tag', class_='class_name', attrs={'attribute': 'value'})
# 按文本内容查找:soup.find_all(text='desired_text')
# 结合正则表达式的文本内容查找:soup.find_all(text=re.compile(r'regex_pattern'))
# 按子节点查找:parent_element.find_all('child_tag')
# 按序号查找:soup.find_all('tag_name')[index]
# 查找特定属性存在的元素:soup.select('[attribute]')
# 结合列表推导式进行查找:[tag for tag in soup.find_all() if condition]
# find(name, attrs, recursive, text, **kwargs):在当前标签内查找第一个符合条件的元素,并返回其 Tag 对象。
# find_all(name, attrs, recursive, text, limit, **kwargs):在当前标签内查找所有符合条件的元素,并返回一个列表。
# find_parent(name, attrs, recursive, text, **kwargs):查找当前标签的父元素并返回其 Tag 对象。
# find_next_sibling(name, attrs, recursive, text, **kwargs):查找当前标签的下一个同级元素并返回其 Tag 对象。

# tag.name:用于获取元素的标签名。
# tag.text 或 tag.get_text():用于获取元素的文本内容。
# tag['attribute'] 或 tag.get('attribute'):用于获取元素的属性值。
# tag.contents:用于获取元素的子节点列表。
# tag.parent 或 tag.parents:用于获取元素的父节点或祖先节点。
# tag.next_sibling 或 tag.previous_sibling:用于获取元素的下一个兄弟节点或上一个兄弟节点。
# tag.next_element 或 tag.previous_element:用于获取元素的下一个节点或上一个节点,可以是标签、字符串或注释。
# tag.has_attr('attribute'):用于判断元素是否包含某个属性。
# tag.find_previous(name=None, attrs={}, text=None, **kwargs) 和 tag.find_all_previous(name=None, attrs={}, text=None, limit=None, **kwargs):用于查找元素前面的满足条件的元素,参数与 find() 和 find_all() 方法类似。
# tag.select_one(selector):用于按照 CSS 选择器语法查找元素,并返回第一个匹配的元素。
# tag.select(selector):用于按照 CSS 选择器语法查找元素,并返回所有匹配的元素。

select() 方法是 BeautifulSoup 中用于按照 CSS 选择器语法查找元素,并返回所有匹配的元素的功能。通过使用CSS选择器语法,可以更方便地定位和选择需要的元素。
下面是 select() 方法及其参数的详细介绍:
语法 select(selector)
参数说明
selector:字符串类型,表示 CSS 选择器语法的表达式,用于指定要查找的元素。
CSS 选择器语法示例
标签选择器:tagname,如 p 表示选择所有 <p> 标签。soup.select('p')
类选择器:.classname,如 .content 表示选择所有 class 属性为 content 的元素。soup.select('.content')
ID 选择器:#idname,如 #footer 表示选择 id 属性为 footer 的元素。soup.select('#header')
层级选择器:ancestor descendant,如 div p 表示选择所有 <p> 标签,其父元素为 <div>。soup.select('div p')
子元素选择器:parent > child,如 div.content > p 表示选择所有 <p> 标签,其父元素为 <div>,且 class 属性为 content。soup.select('div.content > p')
后代元素选择器:ancestor descendant,如 div .content 表示选择所有具有 content 类名的元素,且其祖先元素为 <div>。soup.select('div .content')

这篇关于BS4提取chrome.webdriver方法和属性以及描述并输出到Excel的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/831943

相关文章

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

C++中std::distance使用方法示例

《C++中std::distance使用方法示例》std::distance是C++标准库中的一个函数,用于计算两个迭代器之间的距离,本文主要介绍了C++中std::distance使用方法示例,具... 目录语法使用方式解释示例输出:其他说明:总结std::distance&n编程bsp;是 C++ 标准

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain