Python Selenium - 如何在论坛帖子中提取/排除特定标签或元素?

时间:2017-05-30 22:33:18

标签: python selenium

我为论坛游戏构建了一个网络抓取工具,其中玩家使用[b]粗体[/ b]标签中的特定关键字来发出命令。机器人的工作是遍历线程并保留所有玩家命令的记录,但是我遇到了一个问题,如果玩家A引用玩家B的帖子,机器人会在报价中读取玩家B的命令并更新玩家A的表格。

我找到了引用框的特定类名,但我无法弄清楚如何从整个帖子体中删除该类。

我尝试使用get_attribute('innerHTML')将帖子转换为文本,并使用正则表达式成功删除它,但是我编写的用于提取粗体标记的代码(find_attribute_by_tag_name)变为无效。

我对这里发布的天才有两个问题:

  1. 有没有办法可以删除帖子正文中的特定元素?我在整个谷歌搜索,找不到有效的解决方案

  2. 否则,有没有办法可以将我从get_attribute('innerHTML')获得的HTML转换回元素?

  3. def ScrapPosts( driver ):
      posts=driver.find_elements_by_class_name("postdetails")
      print("Total number of posts on this page:", len(posts))
      for post in posts:
          #print("username:",post.find_element_by_tag_name("Strong").text)
          username=post.find_element_by_tag_name("Strong").text.upper()
    
    
          #remove the quote boxes before sending to check command?
          post_txt=post.find_element_by_class_name("content")
          CheckCommand(post_txt, username)
    

1 个答案:

答案 0 :(得分:3)

  1. Selenium没有内置的删除元素的方法。但是,您可以执行一些可以删除引用框元素的JavaScript代码。请参阅相关问题:https://stackoverflow.com/a/22519967/7880461
  2. 此代码将删除具有类名quoteBox的所有元素,如果您只是更改类名,我认为这对您有用。

    left
    1. 同样的答案 - 没有内置的方法,但你可以使用JavaScript。这种方法可能比第一种方法复杂得多。