Der Kommentar Tab mit allen Kommentaren ist ausgeblendet und wird über ein Javascript-Ereignis angezeigt. Wie von @eLRuLL empfohlen könnten Sie Selen öffnen Sie die Registerkarte Kommentar verwenden und die Kommentare wie diese (hier in Python 3) abrufen:
import time
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.firefox.webdriver.WebDriver(executable_path='.../geckodriver') # adapt the path to the geckodriver
# set the browser window size to desktop view
driver.set_window_size(2024, 1000)
url = "http://www.nytimes.com/2017/01/04/world/asia/china-xinhua-donald-trump-twitter.html"
driver.get(url)
# waiting for the page is fully loaded
time.sleep(5)
# select the link 'SEE ALL COMMENTS' and click it
elem = driver.find_element_by_css_selector('li.comment-count').click()
# get source code and close the browser
page = driver.page_source
driver.close()
soup = BeautifulSoup(page)
comments = soup.find_all('div', class_='comments-panel')
print(comments[0].prettify())
EDIT:
Um alle Kommentare abrufen und alle Antworten auf die Kommentare , müssen Sie 1) die Elemente "READ MORE" und "SEE ALL REPLIES" (2) auswählen, um zu iterieren und auf sie zu klicken. Ich habe dementsprechend mein Codebeispiel geändert:
import time
from bs4 import BeautifulSoup
from selenium import webdriver, common
driver = webdriver.firefox.webdriver.WebDriver(executable_path='.../geckodriver') # adapt the path to the geckodriver
# set the browser window size to desktop view
driver.set_window_size(2024, 1000)
url = 'http://www.nytimes.com/2017/01/04/world/asia/china-xinhua-donald-trump-twitter.html'
driver.get(url)
# waiting for the page is fully loaded
time.sleep(5)
# select the link 'SEE ALL COMMENTS' and READ MORE and click them
elem = driver.find_element_by_css_selector('button.button.comments-button.theme-speech-bubble').click()
while True:
try:
driver.find_element_by_css_selector('div.comments-expand.comments-thread-expand').click()
time.sleep(3)
except common.exceptions.ElementNotVisibleException:
break
# select the links SEE ALL REPLIES and click them
replies = driver.find_elements_by_css_selector('div.comments-expand.comments-subthread-expand')
for reply in replies:
reply.click()
time.sleep(3)
# get source code and close the browser
page = driver.page_source
driver.close()
soup = BeautifulSoup(page, 'html.parser')
comments = soup.find_all('div', class_='comments-panel')
print(comments[0].prettify())
Haben Sie auf der Seite Quelle sehen alle Browser-Entwickler-Tools? Sie sollten in der Lage sein, den Kommentarabschnitt ziemlich leicht zu finden. – MattDMo
willst du nicht 'class _ = 'comments-view')' oder tab-content? – depperm
Ich würde empfehlen, einen Browser-Emulator zu versuchen, überprüfen Sie [Selen '] (http://www.seleniumhq.org) – eLRuLL