2301_81828741 2024-03-21 22:56 采纳率: 33.3%
浏览 2

bs4与splinter爬取页面不行怎么办?

我在使用bs4与splinter爬取动态源码时,他爬的源码要不是上个页面的,就是下个页面的,有时候还一直是一个(已经上划了几个)。每次爬取时都先停了2秒(页面加载出来了且播放了)。

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 Java领域优质创作者 2024-03-21 22:56
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    这个问题可能是由动态加载的问题引起的。可能是在爬虫程序请求页面时,页面还没有完全加载出来,因此获取到的源码是不完整的。解决方法可以尝试以下几种:
    1. 使用wait_until_loaded方法等待页面加载完成再获取源码。 例如:
    browser = Browser()
    browser.visit('http://example.com')
    browser.is_element_present_by_css('#content', wait_time=10)
    html = browser.html
    
    1. 模拟下拉操作使页面完全加载出来再获取源码。 例如:
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    
    1. 使用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
    

    以上这些方法可以尝试一下,根据具体情况选择适合自己的方式解决。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月21日