Python 如何修改HTML里的内容?

HTML内容如图,在span里Select Values之后有一段黄色框框的值:ABC, 123, XYZ.。
如何用Python定位到这些值并且进行修改?从而实现网页上显示内容的修改。

img

要用Python定位到这些值并进行修改,您需要使用web自动化工具,如Selenium。

以下是一个简单的示例代码,演示如何使用Selenium获取黄色框内的值并将其替换为新值:

from selenium import webdriver
from selenium.webdriver.common.by import By

# 设置Chrome浏览器驱动路径
chrome_driver_path = 'path/to/chromedriver'

# 创建Webdriver实例
driver = webdriver.Chrome(chrome_driver_path)

# 打开网页
driver.get('http://yourwebpage.com')

# 定位到Select Values所在的span元素
span_element = driver.find_element(By.XPATH, "//span[contains(text(), 'Select Values')]")

# 获取黄色框内的值
old_values = span_element.get_attribute('title')

# 替换为新值
new_values = 'new_value1, new_value2, new_value3'
span_element.get_attribute('title', new_values)

# 点击保存按钮
save_button = driver.find_element(By.ID, 'save-button')
save_button.click()

# 关闭浏览器
driver.quit()

在这个示例中,我们使用find_element()方法按照元素的XPath或ID进行定位,并使用get_attribute()方法获取当前元素的标题属性值。接着将标题属性值替换为新值,并使用click()方法点击保存按钮,最后关闭浏览器。

请根据您实际情况修改代码中使用的XPath和ID等参数,使其适用于您的HTML内容。
另外,也可以在selenium中执行相应的JS代码来达到目的。

如果有什么不明白的,我们可以找时间一起看下。

#正则即可
import re

s = '''</div><span><span id="7632599946c4f7f89704c521ffdcc13c value span" class="MultipleDropdownWidget value display
data placeholder="---Select Values---">ABC,123,XYZ</span><span class="MultipleDropdownWidget accesibilityhidden">
">'''
con = 'QQQQ'
comp = re.compile(r'<span id=(.*?)Select Values(.*?)>(.*?)</span>', re.S)
res = comp.sub(r'<span id=\1Select Values\2>{}</span>'.format(con),s)
print(res)

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    针对问题中的需求,可以通过BeautifulSoup库来解析HTML文本,定位所需要的元素,并修改其内容,然后保存为新的HTML文件来更新网页的显示内容。

    具体步骤如下: 1. 使用requests库获取网页HTML文本,并将其传递给BeautifulSoup库进行解析,得到bs对象。 2. 利用bs对象,找到需要修改的那个元素。可以使用select方法根据CSS选择器定位所需元素,也可以使用find方法和find_all方法根据元素标签名、属性等定位。 3. 根据需要修改的内容,修改元素的文本或属性。 4. 将修改后的bs对象转化成字符串,并保存为HTML文件,以更新网页的显示内容。

    以下是代码示例:

    import requests
    from bs4 import BeautifulSoup
    
    # 获取网页HTML文本
    url = "https://example.com/"
    response = requests.get(url)
    html = response.text
    
    # 解析HTML文本
    bs = BeautifulSoup(html, 'html.parser')
    
    # 定位需要修改的元素,并修改其内容
    select_values = bs.select('div#select-values > span') # 使用select方法,选择id为select-values下的所有span元素
    if select_values: # 若存在这些元素
        for span in select_values:
            if span.text in ['ABC', '123', 'XYZ']: # 找到需要修改的元素,修改其文本
                span.string = 'New Value'
    
    # 将修改后的bs对象转化为字符串,并保存为HTML文件
    new_html = bs.prettify()
    with open('new_page.html', 'w', encoding='utf-8') as f:
        f.write(new_html)
    

    注意,如果需要修改的内容并不在文本部分而是在元素属性中,需要使用元素的属性访问方法,如span['class']表示span元素的class属性值。

    另外,使用select方法时需要注意选择器的正确性,可以使用浏览器的开发者工具来辅助选择器的编写。如果选择器无法定位到所需元素,可以考虑使用find或find_all方法来定位。同时,需要注意处理可能出现的异常情况,如查找到的元素不存在等。


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