Я использую Selenium/python, чтобы автоматически прокручивать веб-сайт социальных сетей и удалять сообщения. В настоящее время я извлекаю весь текст в один "хит" после прокрутки определенного количества раз (код ниже), но вместо этого хочу извлечь только вновь загруженный текст после каждого прокрутки.
Например, если на странице вначале содержался текст "A, B, C", то после первого прокрутки он отображал "D, E, F", я хотел бы сохранить "A, B, C", затем прокрутите, затем сохраните "D, E, F" и т.д.
Конкретные элементы, которые я хочу извлечь, - это даты сообщений и текст сообщения, которые могут быть получены с помощью селекторов css '.message-date'
и '.message-body'
соответственно (например, dates = driver.find_elements_by_css_selector('.message-date')
).
Может ли кто-нибудь посоветовать, как извлечь только загруженный текст после каждого прокрутки?
Вот мой текущий код (который извлекает все даты/сообщения после завершения прокрутки):
from selenium import webdriver
import sys
import time
from selenium.webdriver.common.keys import Keys
#load website to scrape
driver = webdriver.PhantomJS()
driver.get("https://stocktwits.com/symbol/USDJPY?q=%24USDjpy")
#Scroll the webpage
ScrollNumber=3 #max scrolls
print(str(ScrollNumber)+ " scrolldown will be done.")
for i in range(1,ScrollNumber): #scroll down X times
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3) #Delay between 2 scrolls down to be sure the page loaded
## I WANT TO SAVE/STORE ANY NEWLY LOADED POSTS HERE RATHER
## THAN EXTRACTING IT ALL IN ONE GO AT THE END OF THE LOOP
# Extract messages and dates.
## I WANT TO EXTRACT THIS DATA ON THE FLY IN THE ABOVE
## LOOP RATHER THAN EXTRACTING IT HERE
dates = driver.find_elements_by_css_selector('.message-date')
messages = driver.find_elements_by_css_selector('.message-body')