问题描述
我未能成功编写一个脚本,该脚本可以帮助我抓取自己在公开访问的在线论坛,网站评论版块等上留下的评论中所收到的互动。
让我们假设有一个注释部分,其中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 (将#修改为@)