class定位并点击

img


图片中的网页,前面的元素用我用id定位,后面的class="btn"如何定位,并点击

援引讯飞星火:
解析:

  1. 首先,我们需要使用selenium库的webdriver对象来打开网页。
  2. 然后,我们可以使用webdriver对象的find_element_by_id方法来定位前面的元素。这个方法需要一个参数,即元素的id。
  3. 对于后面的元素,我们可以使用webdriver对象的find_elements_by_class_name方法来定位。这个方法需要一个参数,即元素的class name。它会返回一个列表,包含所有匹配的元素。我们可以通过索引来选择我们需要的元素。
  4. 最后,我们可以使用选中元素的click方法来点击它。

代码如下:

from selenium import webdriver

# 创建webdriver对象,这里以Chrome浏览器为例
driver = webdriver.Chrome()

# 打开网页
driver.get('网页url')

# 定位前面的元素
element = driver.find_element_by_id('前面的元素id')

# 定位后面的元素
elements = driver.find_elements_by_class_name('btn')
# 这里假设我们点击第一个元素,如果需要点击其他元素,可以修改索引值
elements[0].click()

注意:这段代码需要在安装了selenium和对应浏览器驱动的环境下运行,且'网页url'和'前面的元素id'需要替换为实际的值。

import requests
from bs4 import BeautifulSoup

# 目标网页的URL
url = "https://cx.sceea.cn/html/GKCJ.htm"

# 发起GET请求获取页面内容
response = requests.get(url)
html_content = response.text

# 使用BeautifulSoup解析页面内容
soup = BeautifulSoup(html_content, "html.parser")

# 定位按钮元素
button_element = soup.find("button", class_="btn")

# 判断是否找到按钮元素
if button_element:
    # 获取按钮的onclick属性值
    onclick_value = button_element.get("onclick")
    
    # 提取onclick属性值中的JavaScript函数名(Open)
    function_name = onclick_value.strip("()").split("(")[0]
    
    # 输出函数名
    print("Button's JavaScript function:", function_name)
    
    # 如果需要模拟点击,可以给下面这行代码“解冻”
    # response = requests.get(f"https://cx.sceea.cn/html/{function_name}.htm")
    # 对response进行解析,获取点击后的页面内容
else:
    print("Button element not found.")

用requests库发起GET请求,获取网页内容,再用BeautifulSoup库解析HTML,先通过class定位按钮元素,然后提取按钮的onclick属性值来确定执行的JavaScript函数名。

(先试试,要是有反爬措施就没法弄了)

下面这个是运行结果

img

import bs4
soup = bs4.BeautifulSoup('<a class="social-link">some link</a>')

# using find() and find_all() methods:
soup.find("a", class_="social-link")  # alternatively find_all can be used to find all
soup.find("a", {"class": "social-link"})
# to find by partial class name we can use regex:
import re
soup.find("a", class_=re.compile("link", re.I))  # tip: re.I parameter makes this case insensitive

# using css selectors via select() and select_one() methods
soup.select('.social-link')
# to find by partial class name we can use `*=` matcher:
soup.select('[class*="link"]') 
# or
soup.select('[class*="link" i]')  # "i" addition makes this case insensitive

你用css选择器就可以了。

定位应该不难,获取class对应标签列表,按索引获取,至于怎么点击就是小问题了

【以下回答由 GPT 生成】

对于第一个问题,您可以使用Selenium库中的find_elements_by_class_name方法来定位多个class元素,并点击其中一个可以使用的按钮。以下是代码示例:

from selenium import webdriver

# 创建浏览器实例
driver = webdriver.Chrome()

# 打开目标网页
driver.get("https://cx.sceea.cn/html/GKCJ.htm")

# 通过id定位前面的元素
element_before = driver.find_element_by_id("element_id")

# 通过class定位后面的所有按钮元素
elements_buttons = driver.find_elements_by_class_name("btn")

# 遍历所有按钮元素并点击第一个可用的按钮
for element_button in elements_buttons:
    if element_button.is_enabled():
        element_button.click()
        break

# 关闭浏览器
driver.quit()

对于第二个问题,您可以通过使用find_element_by_id方法来定位查询输入框,并使用send_keys方法输入查询内容,然后使用submit方法执行查询操作。以下是代码示例:

from selenium import webdriver

# 创建浏览器实例
driver = webdriver.Chrome()

# 打开目标网页
driver.get("https://cx.sceea.cn/html/GKCJ.htm")

# 通过id定位查询元素
query_element = driver.find_element_by_id("query_element_id")

# 输入查询内容
query_element.send_keys("查询内容")

# 执行查询操作
query_element.submit()

# 关闭浏览器
driver.quit()

希望以上代码和说明能够帮到您。如果还有任何问题,请随时向我提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

使用 getElementsByClassId()选中元素。

模拟浏览器点击