Web サイト " http://everydayhealth.com "をクロールしようとしています。ただし、ページが動的にレンダリングされることがわかりました。それで、「もっと見る」ボタンをクリックすると、いくつかの新しいニュースが表示されます。ただし、スプリンターを使用してボタンをクリックしても、「browser.html」が現在の html コンテンツに自動的に変更されません。Splinter または Selenium を使用して、最新の HTML ソースを取得する方法はありますか? スプリンターの私のコードは次のとおりです。
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)
@Louis の回答に基づいて、プログラムを次のように書き直しました。
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()
ただし、出力テキストでは、更新されたページのテキストがまだ見つかりませんでした。たとえば、"Is Milk Your Friend or Foe?" を検索しても何も返されません。どうしたの?