phantomjs模拟浏览器click获取数据重复

收藏

例如使用phantomjs爬取斗鱼使用click跳转到下一页码,使用类似的代码结构:  

while True:
    some.click()
    content = driver.page_source

 

回答

MrSun回答

原因:

    click之后程序需要一个解析页面获取数据的过程,会有一定的时间间隔,如果没有时间等待则可能使用的是上一次的旧数据,那么则给我的效果就是数据重复

解决方法:

    1、 click后面休眠一段时间,使用sleep,具体休息多长时间根据你当前的网页加载速度确定

    2、 使用下面的逻辑来人为控制

while True:
    # click 触发之前情况上一次访问的数据
    driver.page_source = '' # 不要设置成None,疑问如果click超时其他原因确实没有获取到数据那么也是None
    some.click()    #触发click获取新的内容
    while True:
        content = driver.page_source
        if content == '':
            cotinue # 说明还没有获取到新的数据
        else:
            break # 说明获取到了新的数据或者获取失败

    3、如果提取的是里面的单独摸个标签那么可以使用显示等待摸个标签加载完毕再提取WebDriverWait(driver, 100).until(lambda x: x.find_element_by_xpath('.WB_FEED'))

    4、附加一个博客的总结方法 

        http://blog.csdn.net/mighty13/article/details/78172585

(0)

提交成功