Tôi đang cố gắng thu thập dữ liệu trang web "http://everydayhealth.com". Tuy nhiên, tôi thấy rằng trang sẽ được hiển thị động. Vì vậy, khi tôi nhấp vào nút "Thêm", một số tin tức mới sẽ được hiển thị. Tuy nhiên, sử dụng splinter để nhấp vào nút không cho phép "browser.html" tự động thay đổi thành nội dung html hiện tại. Có cách nào để cho nó nhận được nguồn html mới nhất, bằng cách sử dụng hoặc splinter hoặc selen? Mã của tôi trong ly khai như sau:Splinter hoặc Selenium: Chúng tôi có thể tải trang html hiện tại sau khi nhấp vào nút không?
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)
Dựa trên @ câu trả lời Louis, tôi viết lại chương trình như sau:
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()
Tuy nhiên, trong văn bản đầu ra, tôi vẫn không thể tìm văn bản trong trang được cập nhật. Ví dụ, khi tôi tìm kiếm "Sữa của bạn là bạn của bạn hay kẻ thù?", Nó vẫn không trả lại gì cả. Có chuyện gì vậy?
Làm thế nào để bạn kiểm tra xem không có thay đổi trong HTML? Ví dụ, tôi thấy '5 Herbs và gia vị tăng cường sức khỏe của bạn' bên trong html in và được tải sau khi nhấp vào nút' More'. – alecxe
@alecxe Cảm ơn bạn đã trả lời. Tôi nghĩ rằng tôi kiểm tra nó giống như cách bạn kiểm tra nó. Lý do mà bạn tìm thấy "5 loại thảo mộc và gia vị làm tăng sức khỏe của bạn" xuất hiện trong html in là bởi vì bài viết này đã xảy ra để được hiển thị trong hình thu nhỏ ở đầu trang web. Nếu bạn kiểm tra bất kỳ tiêu đề nào khác hiển thị sau khi nhấp vào nút, ví dụ "Có phải là bạn của bạn hoặc kẻ thù?", Bạn sẽ không tìm thấy nó. – xjmfel