使用Python和Selenium在数据框中加载前面的同级文本

问题描述

我未能成功编写一个脚本,该脚本可以帮助我抓取自己在公开访问的在线论坛,网站评论版块等上留下的评论中所收到的互动。

让我们假设有一个注释部分,其中55个注释按降序排列(因此,顶部带有id="comment-55"的注释)。我留下的评论位于位置53。为了获得帮助,我在下面重新创建了一个最小的DOM:

<div class="comment-section>
  <div id="comment-55">
    <div class="comment-info">
      <div class="comment-author">Mike</div>
    </div>
    <div class="comment-text>
      <p>Lorem ipsum dolor sit amet,consectetur adipisicing elit</p>
    </div>
  </div>

  <div id="comment-54">
    <div class="comment-info">
      <div class="comment-author">John</div>
    </div>
    <div class="comment-text>
      <p>Lorem ipsum dolor sit amet,consectetur adipisicing elit</p>
      <br/>
      <p>sed do eiusmod tempor incididunt ut labore et dolore</p>
      <br/>
      <p>magna aliqua. Ut enim ad minim veniam,quis nostrud</p>
      <br/>
      <p>exercitation ullamco laboris nisi ut aliquip...</p>
      <br/>
    </div>
  </div>

  <div id="comment-53">
    <div class="comment-info">
      <div class="comment-author">lazarea</div>
    </div>
    <div class="comment-text>
      <p>This is my own message on this forum.</p>
      <br/>
      <p>Now that I have posted this message,I am very curIoUs</p>
      <br/>
      <p>to hear what others here will react.</p>
      <br/>
    </div>
  </div>

</div>

我想获取我的所有发布的用户评论,并在这样的数据框中组织它们:

      'Author'     'Comment'
0      "John"      "Lorem ipsum dolor sit amet,consectetur adipisicing elit sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip..."
1      "Mike"      "Lorem ipsum dolor sit amet,consectetur adipisicing elit"

我尝试在XPath命令中应用preceding sibling运算符:

precedingAuthors  = webdriverwait(driver,5).until(
   EC.presence_of_all_elements_located((By.XPATH,"//div[@id='comment-53']/preceding-sibling::*/div[@class='comment-info']/div[@class='comment-author']"))
)
precedingComments = webdriverwait(driver,"//div[@id='comment-53']/preceding-sibling::*/div[@class='comment-text']/p"))
)

然后,我想使用这两个列表创建一个Pandas DataFrame。但是毫不奇怪,我收到一条错误消息,说两个列表的长度不相等。这是因为尽管在每个评论<div>中只有一个作者姓名,但评论部分可能(实际上,经常)持有多个<p>标签

这时我陷入了困境,我不确定如何将我所有的<p>标签与其对应的作者匹配。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)