"http://everydayhealth.com"웹 사이트를 크롤링하려고합니다. 그러나 페이지가 동적으로 렌더링된다는 것을 알게되었습니다. 따라서, "More (추가)"버튼을 클릭하면 몇 가지 새로운 뉴스가 표시됩니다. 그러나, 단추를 클릭하기 위해 splinter를 사용하면 "browser.html"이 현재 HTML 컨텐트로 자동 변경되지 않습니다. 스플린터 (splinter) 또는 셀레늄 (selenium) 중 하나를 사용하여 최신 HTML 소스를 얻을 수있는 방법이 있습니까? 다음과 루이스의 대답 @를 바탕으로Splinter or 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)
, 나는이 프로그램을 다시 썼다 : 다음과 같이 가시에 내 코드가
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()
를 그러나 출력 텍스트에서, 나는 아직도 할 수 없었다 업데이트 된 페이지에서 텍스트를 찾으십시오. 예를 들어, "Milk Your Friend or Foe?"를 검색하면 여전히 아무것도 반환하지 않습니다. 뭐가 문제 야?
HTML에 변경 사항이없는 것을 어떻게 확인합니까? 예를 들어 인쇄 된 html 안에 '5 가지 허브와 향신료가 건강을 더 돋보이게합니다'라는 텍스트가 표시되며 '더보기'버튼을 클릭하면로드됩니다. – alecxe
@alecxe 답장을 보내 주셔서 감사합니다. 나는 당신이 그것을 확인하는 것과 같은 방식으로 그것을 체크한다고 생각한다. 이 기사가 웹 페이지의 맨 위에있는 축소판에 표시 되었기 때문에 인쇄 된 HTML에 "5 나물 및 향신료가 건강을 더 돋 웁니다."라는 이유를 발견했습니다. "Milk Your Friend or Foe?"와 같이 단추를 클릭 한 후 표시되는 다른 제목을 확인하면 찾을 수 없습니다. 회신에 감사드립니다. – xjmfel