【发布时间】:2020-07-21 20:15:40
【问题描述】:
我需要用用户名刮掉 cmets 并回复 cmets,日期来自这个 website
cmets 树位于 div 容器“comment-list”内,每个评论可能有一个递归结构(如果有回复):
“comment-list”包含“comment-item”列表。
每个“comment-item”有 4 个部分:元数据(用户名、时间)、实际评论、回复
-
评论项目内容:
- 元数据:
- 用户名
- 发布时间
- div 'comment-text' p ACTUAL COMMENT /p
如果存在回复,则重复评论项:
- 评论项目
- 评论项目
- 元数据:
这是尸体:
<div class = 'tn-comment-list'>
<div class ='tn-comment-item'>
<div class = 'tn-comment-item-content'>
<div class = 'tn-comment-item-content-metadata'>
<span class = 'tn-user-name'>username 1 </span>
<time> july 20 2020 18:02 </time>
</div>
<div class = 'tn-comment-item-content-text'>
<p> bla bla comment 1 </p>
</div>
<div class = 'tn-comment-item'>... </div> //reply1
<div class = 'tn-comment-item'>... </div>//reply 2
</div>
</div>
</div>
我没有递归地做,而是试图找到所有 cmets (comment-item) 的元素,不管它们是否是答案。
from selenium import webdriver
news_url = 'https://tengrinews.kz/kazakhstan_news/strogiy-karantin-vvodyat-v-mangistauskoy-oblasti-408772/'
driver = webdriver.Chrome()
driver.get(news_url)
comments_list = driver.find_elements_by_xpath("//div[@class='tn-comment-item']")
print(type(comments_list))
print('length of comments %d ' % len(comments_list))
cmets_list 的长度是 21,但我不知道如何遍历它。另外,我认为递归解析仍然是个好主意。
如何递归解析得到所有的cmets?
【问题讨论】:
标签: python selenium parsing recursion