получить полный html источник с селеном - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу получить количество просмотров поста в телеграмме. когда я получаю страницу источника, функции javaScript еще не выполняются, поэтому данные не включаются. любая помощь?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By
import selenium.webdriver.support.expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait    

driver = webdriver.Firefox()

driver.get("https://t.me/varzesh3/106369")

wait = WebDriverWait(driver, 30)
element = wait.until(EC.visibility_of_any_elements_located((By.CLASS_NAME,'tgme_widget_message_views')))

Я даже пробовал с Chrome драйвером, но без изменений.

Ответы [ 2 ]

3 голосов
/ 29 апреля 2020

Это не работает, потому что элемент, который вы хотите проверить, находится внутри iframe. Сначала нужно переключиться на IFrame.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By
import selenium.webdriver.support.expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait    

driver = webdriver.Chrome()

driver.get("https://t.me/varzesh3/106369")
iframe = driver.find_element(By.ID,"telegram-post-varzesh3-106369")
driver.switch_to.frame(iframe)
wait = WebDriverWait(driver, 30)
element = wait.until(EC.visibility_of_any_elements_located((By.CLASS_NAME,'tgme_widget_message_views')))
0 голосов
/ 10 мая 2020

Здесь есть лучшая идея. Я могу использовать bs4 с URL https://t.me/varzesh3/106369?embed=1.

, так как лучше, потому что когда вы отправляете запрос по этому URL, у вас есть iframe сейчас.

и это код :

def generate_post_views(link):
   # https://t.me/varzesh3/106432
   html = requests.get(link + '?embed=1')
   plain_text = html.text
   soup = BeautifulSoup(plain_text, "html.parser")
   try:
       views = soup.find('span', {'class':'tgme_widget_message_views'}).get_text()
   except AttributeError:
       views = 0
   return views
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...