Selenium自行整理【十五】

本文深入探讨Java中的类与对象概念,解析主方法特性、成员变量、方法定义、new关键字的作用及类的继承机制,通过实例说明如何创建与调用类的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.4、类与对象

       在 Java 语言中经常被提到的两个词就是类与对象。实质上可以把类看作是对象的载体,它定义了对象所具有的功能。对象是类的一个具体的实例。如果把“电脑”看作一个类的话,那作者面前的这台笔记本电脑就是一个具体对象。

3.4.1、类的主方法

从主方法的定义可以看到主方法具有以下特性:

       1、主方法是静态的。

       2、主方法没有返回值。

       3、主方法的形参为数组。

 

3.4.2、成员变量

            在 Java 语言中对象的属性称为成员变量,也可以称为属性

 

3.4.3、方法

         方法就是类下面实现具体功能的一个整体

运行结果】:

               当然,我们可以为方法设置入参和返回值

运行结果】:

3.4.4、new 关键字

     这也是 Java 中非常特色的一个概念。New 到底是什么?为什么要 new?

     使用 new 关键字实际上做了三件事情:

          1、与堆栈(栈)处分配一个存储空间保存引用(固定的指针)。

          2、与堆区分配一片内存空间保存相应类的对象(引用数据类型的对象,如:数组、对象等)。

          3、将堆区对象的首地址赋予栈区引用。

 

3.4.5、类的继承

       Java 中用 extends 关键字来做类的继承。

      创建 A 类,实现 add()方法做整数加法运算。

     

      创建 B 类,继承 A 类,并实现 sub()方法做整数减法运算。 

     

      继续创建 C 类,调用 B 类中继承的 A 类的 add()方法。

     

 

<think>好的,我现在需要帮助用户解决如何使用Selenium爬取网易云音乐评论的问题。首先,我得回忆一下用户提供的参考引用内容,看看里面有哪些有用的信息。引用2、3、4、5都提到了使用Selenium来爬取评论,特别是引用3提到了具体的步骤,比如目标数据是用户名、评论内容、评论时间,还有歌曲的URL。引用5提到了处理iframe和热评的注意事项。 首先,我应该确定用户的需求是抓取特定歌曲的评论,可能需要处理登录问题,但引用3提到采用非登录方式,所以可能不需要处理登录。不过网易云音乐的评论可能嵌套在iframe里,引用5指出需要使用switch_to.frame()来切换frame,否则定位不到元素,这点很重要。此外,评论数据可能在某个div标签内,比如引用5说的前十五条热评,但用户可能需要全部评论,所以得考虑翻页或者滚动加载的问题。 接下来,我需要整理步骤。首先配置Selenium环境,安装浏览器驱动,比如ChromeDriver。然后启动浏览器,打开指定歌曲的URL。切换iframe,找到评论所在的frame,可能通过ID或者索引来定位。然后定位评论元素,提取用户名、内容、时间。可能需要处理动态加载,比如滚动页面或者点击“更多评论”按钮,但引用5提到热评只需要前十五条,所以用户可能只需要这些,或者需要更全面的数据。 然后,代码部分需要导入Selenium的WebDriver,设置无头模式(引用4提到无界面爬取),处理iframe切换,使用find_elements_by_css_selector来获取评论列表。例如,用户名可能用.user类,内容用.comment-content类,时间用.time类。需要检查实际网页结构,可能类名不同,比如查看网易云音乐页面的HTML结构,但用户提供的引用中没有具体类名,可能需要假设或指导用户自行查看。 另外,引用3中的示例代码可能有用,但用户没有给出具体代码,可能需要根据常规做法编写。比如,使用WebDriverWait来等待元素加载,避免因为页面加载延迟导致的元素找不到错误。处理可能的分页,比如循环点击下一页按钮,但网易云音乐的评论是否是分页还是无限滚动?需要确认,如果是无限滚动,可能需要模拟滚动操作,或者找到加载更多的按钮。 此外,需要注意反爬措施,比如Selenium可能被检测到,可以设置无头模式并使用一些选项来隐藏自动化特征,比如禁用自动化扩展、设置user-agent等。引用4提到无界面爬取,可能需要用到ChromeOptions的headless选项。 最后,组装这些步骤,写出具体的代码示例,并提醒用户注意可能的异常处理,比如元素未找到、iframe切换失败等。同时,生成相关问题,比如如何优化爬取速度、处理验证码、数据存储方式等。</think>以下是通过Selenium爬取网易云音乐评论的详细实现步骤(Python环境): ### 一、环境准备 1. 安装浏览器驱动(推荐Chrome) 2. 安装依赖库: ```bash pip install selenium webdriver-manager ``` ### 二、核心实现代码 ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from webdriver_manager.chrome import ChromeDriverManager def get_comments(song_url): # 浏览器配置 options = webdriver.ChromeOptions() options.add_argument('--headless') # 无界面模式[^4] driver = webdriver.Chrome(ChromeDriverManager().install(), options=options) try: driver.get(song_url) # 切换frame(关键步骤)[^5] WebDriverWait(driver, 10).until( EC.frame_to_be_available_and_switch_to_it("g_iframe") ) # 等待评论加载 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, ".cmmts.j-flag")) ) # 提取评论数据 comments = [] for item in driver.find_elements(By.CSS_SELECTOR, ".itm"): try: user = item.find_element(By.CSS_SELECTOR, ".name").text content = item.find_element(By.CSS_SELECTOR, ".cnt").text time = item.find_element(By.CSS_SELECTOR, ".time").text comments.append({ 'user': user, 'content': content.replace("\n", " "), 'time': time }) except: continue return comments finally: driver.quit() # 示例调用 if __name__ == "__main__": url = "https://music.163.com/#/song?id=2124731026" # 替换目标歌曲ID[^3] print(get_comments(url)) ``` ### 三、关键技术点 1. **frame切换**:必须通过`switch_to.frame()`进入评论容器,否则无法定位元素 2. **动态等待**:使用`WebDriverWait`确保元素加载完成 3. **无头模式**:通过`--headless`参数实现后台爬取 4. **数据清洗**:处理评论内容中的换行符等特殊字符 ### 四、常见问题处理 1. **元素定位失败**:检查CSS选择器是否需要更新(网易云页面结构可能变更) 2. **加载超时**:适当增加`WebDriverWait`的等待时间 3. **反爬机制**:可添加`user-agent`伪装和请求间隔
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值