Próbuję zaindeksować witrynę "http://everydayhealth.com". Jednak okazało się, że strona będzie renderowana dynamicznie. Kiedy kliknę przycisk "Więcej", pojawią się nowe wiadomości. Jednak użycie splintera do kliknięcia przycisku nie pozwala automatycznie zmienić "browser.html" na bieżącą zawartość html. Czy istnieje sposób, aby uzyskać najnowsze źródło html, używając splintera lub selenu? Mój kod w drzazgi jest następujący:Odłamek lub selen: Czy możemy uzyskać aktualną stronę html po kliknięciu przycisku?
import requests
from bs4 import BeautifulSoup
from splinter import Browser
browser = Browser()
browser.visit('http://everydayhealth.com')
browser.click_link_by_text("More")
print(browser.html)
podstawie @ odpowiedź Louisa, przepisałem program następująco:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Firefox()
driver.get("http://www.everydayhealth.com")
more_xpath = '//a[@class="btn-more"]'
more_btn = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_xpath(more_xpath))
more_btn.click()
more_news_xpath = '(//a[@href="http://www.everydayhealth.com/recipe-rehab/5-herbs-and-spices-to-intensify-flavor.aspx"])[2]'
WebDriverWait(driver, 5).until(lambda driver: driver.find_element_by_xpath(more_news_xpath))
print(driver.execute_script("return document.documentElement.outerHTML;"))
driver.quit()
Jednak w tekście wyjściowym, nadal nie mógł znajdź tekst na zaktualizowanej stronie. Na przykład, gdy wyszukuję hasło "Czy Twój przyjaciel lub wróg jest mlekiem", to wciąż nie zwraca ono niczego. Jaki jest problem?
Jak sprawdzić, czy nie ma zmian w kodzie HTML? Na przykład widzę tekst '5 Zioła i przyprawy, które poprawiają twoje zdrowie' w wydrukowanym html i który jest ładowany po kliknięciu przycisku' Więcej'. – alecxe
@alecxe Dzięki za odpowiedź. Myślę, że sprawdzam to w taki sam sposób, jak to sprawdzasz. Powodem, dla którego w wydrukowanym html pojawiło się "5 ziół i przypraw, które poprawiają zdrowie", jest fakt, że artykuł ten był wyświetlany w miniaturce na samej górze strony. Jeśli zaznaczysz inny tytuł wyświetlany po kliknięciu przycisku, na przykład "Czy Twój przyjaciel lub wróg?", Nie znajdziesz go. – xjmfel