python 通过find_element xpath获取指定标签里的数据,怎么将标签下的字标签连同文字一起获取到呢?

python 通过find_element xpath获取指定标签里的数据,怎么将标签下的字标签连同文字一起获取到呢?
比如一个 div标签,下面有 很多 p标签,现在获取的是纯文本,我想讲p标签也获取到,这样直接保存为html,直接打开就是一个格式化好的页面

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7521922
  • 这篇博客也不错, 你可以看下python通过xpath读取html指定的内容并获取该部分html代码
  • 除此之外, 这篇博客: Python爬虫:Xpath获取关键标签,实现盖楼抽奖中的 随机提取评论的内容 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在众多的网站盖楼活动中,官方网站一般都会检测是否有内容重复,一般同一个账号多次评论重复的内容,肯定会被禁止评论一段时间。

    所以,我们需要将评论的内容多样化,比如说这个网站要我们称赞手机性能进行盖楼抽奖,那么我们就需要备用一些评论文字,方便程序随机获取。

    具体文字放置在txt文件中,我们通过下面的代码进行读取:

    # 获取需要评论的文本内容
    txt_contents = []
    f = open("回帖文案.txt", "r", encoding='utf-8')
    line = f.readline()  # 读取第一行
    while line:
        if line.strip() != "":
            txt_contents.append(line.strip())  # 列表增加
        line = f.readline()  # 读取下一行
    print(txt_contents)
    count = len(txt_contents)
    

    假如,我们是需要参加游戏论坛的盖楼评论活动,那么就可以用下面的文本进行随机提取评论,样本越多,重复性越少。
    盖楼评论筛选

  • 以下回答由chatgpt基于相关博客总结生成:

    使用Python中selenium库结合xpath语法可以较为方便地实现该功能,可以按照以下步骤操作:

    1. 安装selenium库和Chrome浏览器对应版本的ChromeDriver驱动程序。

    2. 导入selenium库,启动Chrome浏览器并访问目标网页。

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    # 启动Chrome浏览器
    browser = webdriver.Chrome()
    
    # 访问目标网页
    url = 'http://www.example.com'
    browser.get(url)
    
    1. 使用find_element方法结合xpath语法定位到指定的标签,并获取其中的子标签和文本内容。
    # 使用xpath语法定位目标标签
    target_tag = browser.find_element(By.XPATH, 'xpath expression')
    
    # 获取目标标签的子标签和文本内容
    children = target_tag.find_elements(By.XPATH, './child::*')
    text = target_tag.text
    
    1. 将获取到的子标签和文本内容处理成html格式的字符串。
    # 处理子标签和文本内容为html格式字符串
    html_str = '<div>'
    for child in children:
        html_str += etree.tostring(child, encoding='unicode')
    if text:
        html_str += text
    html_str += '</div>'
    
    1. 将处理后的html字符串保存为html文件。
    # 保存为html文件
    with open('example.html', 'w', encoding='utf-8') as f:
        f.write(html_str)
    

    完整代码示例:

    from lxml import etree
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    # 启动Chrome浏览器
    browser = webdriver.Chrome()
    
    # 访问目标网页
    url = 'http://www.example.com'
    browser.get(url)
    
    # 使用xpath语法定位目标标签
    target_tag = browser.find_element(By.XPATH, 'xpath expression')
    
    # 获取目标标签的子标签和文本内容
    children = target_tag.find_elements(By.XPATH, './child::*')
    text = target_tag.text
    
    # 处理子标签和文本内容为html格式字符串
    html_str = '<div>'
    for child in children:
        html_str += etree.tostring(child, encoding='unicode')
    if text:
        html_str += text
    html_str += '</div>'
    
    # 保存为html文件
    with open('example.html', 'w', encoding='utf-8') as f:
        f.write(html_str)
    
    # 关闭浏览器
    browser.quit()
    

element.get_attribute('outerHTML')