#python #selenium #selenium-webdriver
#python #selenium #selenium-webdriver
Вопрос:
У меня есть структура:
[
# If it is a comment (parent comment)
{
'commentParentId': '',
'parentId': '',
'posted': '28/02/2019',
'author': {
'id': '125379',
'name': 'david',
},
'content': 'i need help'
},
# If it is a comment reply
{
'commentParentId': 'abcdedf',
'parentId': '253654',
'posted': '28/02/2019',
'author': {
'id': '458216',
'name': 'david',
},
'content': 'i need help'
},
........................
}]
Я хочу очистить комментарий и ответы на комментарии,
Если это комментарий: CommentParentID
и ParentID
являются null
.
В противном случае это ответ на комментарий: CommentParentID
и ParentID
будет взят ID
из комментария, на который кто-то ответил.
Я очищаю комментарии с помощью Selenium, вот так:
import requests
from bs4 import BeautifulSoup
import json
from datetime import datetime
from selenium import webdriver
# Execute Web link
url = "https://genvita.vn/thu-thach/7-ngay-detox-da-dep-dang-thon-nguoi-
khoe-qua-soc-len-den-8-trieu-dong"
driver_path = ('F:/chromedriver.exe')
browser = webdriver.Chrome(executable_path=driver_path)
browser.get(url)
confirm_write = input("Input ok to scrape data: ")
# I want to load all comments (click 'Xem Thêm' then data was
# scraper)
if confirm_write == 'ok':
getID = browser.find_element_by_css_selector("div[class='media-body-
replies']")
getChildID = getID.find_elements_by_css_selector('data-comment-id')
# Get ID
for childID in getChildID:
print(childID.get_attribute('data-comment-id'))
Но мой код не работает.
Комментарий и ответ на комментарий имеют один и тот же класс, тот же идентификатор, разница только между комментарием и ответом на комментарий — это класс: class ='media-body-replies'
.
Но я использую это, и это не работает.
Если я использую getChildID = browser.find_elements_by_css_selector('data-comment-id')
Я получу все идентификаторы parentID
и replyID
(аналогично содержимому), я не могу отделить комментарий от ответа на комментарий.
Спасибо
Комментарии:
1. Мне что-то не ясно. Когда вы используете «data-comment-id», вы получаете оба типа комментариев, но вам нужен только один из них или вы хотите иметь возможность разделять родительские и дочерние комментарии?
2. @NoSplitSherlock я хочу разделить родительские и дочерние комментарии, потому что идентификатор и класс родительских и дочерних комментариев одинаковы, это не имеет разницы, кроме дочерних комментариев внутри класса
class='media-body-replies'
, я попробую это, но это не может удалить дочерние комментарии.3. @NoSplitSherlock вы можете получить доступ к моему веб-сайту: genvita.vn/thu-thach / … для получения дополнительной информации данные были scraper
4. Не было бы лучшей идеей выполнить поиск контейнера комментариев и просмотреть комментарии, просматривая тип комментария?
5. @NoSplitSherlock Меня пытались, но это не сработало, потому что идентификатор и класс родительских и дочерних комментариев не имеют значения, поэтому я не могу создать цикл для разделения и поиска родительских и дочерних комментариев