我在使用bs4与splinter爬取动态源码时,他爬的源码要不是上个页面的,就是下个页面的,有时候还一直是一个(已经上划了几个)。每次爬取时都先停了2秒(页面加载出来了且播放了)。
1条回答 默认 最新
关注
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
这个问题可能是由动态加载的问题引起的。可能是在爬虫程序请求页面时,页面还没有完全加载出来,因此获取到的源码是不完整的。解决方法可以尝试以下几种:- 使用wait_until_loaded方法等待页面加载完成再获取源码。 例如:
browser = Browser() browser.visit('http://example.com') browser.is_element_present_by_css('#content', wait_time=10) html = browser.html
- 模拟下拉操作使页面完全加载出来再获取源码。 例如:
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
- 使用phantomJS或Selenium控制浏览器来获取完整的动态页面。 例如:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.PhantomJS() driver.get("http://example.com") wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.ID, "content"))) html = driver.page_source
以上这些方法可以尝试一下,根据具体情况选择适合自己的方式解决。
解决 无用评论 打赏 举报