关于selenium中wd.find_element_by_link_text(‘XX‘).click()点击不了

文章讲述了在爬取网页时遇到的点击元素导致找不到目标的问题。原本使用find_element_by_link_text方法,但在点击后出现错误。作者提出通过更换元素选择器,如XPath,重新定位并执行点击操作来解决这个问题。另外,还提到可以通过分析JavaScript中的JSON数据作为另一种解决方案。

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

目录

1、爬取网页的类似代码

2、解决


1、爬取网页的类似代码

通过点击不同的文本造成class的值进行改变和网页更新当是不会跳转的新的页面而是对原来的页面进行刷新。

<span class="">工业化</span>

<span class="active">管理</span>

<span class="">XXXX</span>

<span class="">XXXX</span>

<span class="">XXXX</span>

(我)造成的报错信息是:

就是类似于说找不到这个东西,因为find_element_by_link_text('XX')这个代码是通过文本链接进去定位查找,然后点击(click)会造成无法找到这样的错误。

2、解决

通过换一种元素选择器来定位这个元素然后再次进行点击事件就可以进行解决。

例如:

wd.find_element_by_xpath('//*[@id="hotBook"]/div[2]/div[1]/span'+ '['+ str(i)+ ']').click()

 通过xpath元素选择器重新定位一次再次点击就可以解决。

当然还有其他的解决方法:像获取到对应的JavaScript后面的json文件通过逆向分析可以获取相应的数据信息。

爬虫代码from selenium import webdriver from selenium.webdriver.edge.service import Service # 使用 Edge 的 Service from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time import pandas as pd # 设置 EdgeDriver 路径 edge_driver_path = r'D:\edgedriver\msedgedriver.exe' # 初始化浏览器 service = Service(edge_driver_path) driver = webdriver.Edge(service=service) # 使用 Edge # 打开百度 driver.get('https://www.baidu.com') # 在百度搜索框中输入“微博”并搜索 search_box = driver.find_element(By.NAME, 'wd') # 百度搜索框的 name 是 'wd' search_box.send_keys('微博') search_box.send_keys(Keys.RETURN) # 等待搜索结果加载 time.sleep(3) # 点击微博官网链接(假设第一个结果就是微博官网) weibo_link = driver.find_element(By.XPATH, '//div[@id="content_left"]//a[contains(text(), "微博")]') weibo_link.click() # 等待微博页面加载 time.sleep(5) # 手动登录微博 print("请在浏览器中手动登录微博,登录完成后按回车继续...") input() # 搜索目标话题(例如“房价问题”) search_box = driver.find_element(By.XPATH, '//input[@type="text" and @name="q"]') search_box.send_keys('房价问题') # 修改为你要搜索的话题 search_box.send_keys(Keys.RETURN) # 等待页面加载 time.sleep(5) # 滚动页面以加载更多内容 for _ in range(3): # 滚动3次 driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(2) # 获取微博数据 weibo_list = driver.find_elements(By.XPATH, '//div[@class="WB_text" and @node-type="feed_list_content"]') data = [] for weibo in weibo_list: try: # 获取微博内容 content = weibo.text # 获取转发路径(假设转发路径在某个特定元素中) forward_path = weibo.find_element(By.XPATH, './/a[@class="转发"]').text # 需要根据实际页面结构调整 # 获取发布时间 forward_time = weibo.find_element(By.XPATH, './/a[@class="时间"]').text # 需要根据实际页面结构调整 # 获取用户类型 user_type = weibo.find_element(By.XPATH, './/a[@class="用户类型"]').text # 需要根据实际页面结构调整 # 获取微博ID(假设ID在某个特定元素中) weibo_id = weibo.find_element(By.XPATH, './/a[@class="ID"]').text # 需要根据实际页面结构调整 # 将数据添加到列表 data.append({ 'weibo_id': weibo_id, 'forward_time': forward_time, 'forw
最新发布
03-11
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值