Splinter节省了脱胎的html

Chr*_*est 6 python screen-scraping splinter

splinter 0.7.3python 2.7.2Linux平台上使用该模块使用默认的Firefox浏览器来搜索网站上的目录列表.

这是通过单击html中的"下一步"链接来迭代分页Web列表的代码片段.

    links = True
    i = 0
    while links:
        with open('html/register_%03d.html' % i, 'w') as f:
            f.write(browser.html.encode('utf-8'))
        links = browser.find_link_by_text('Next')
        print 'links:', links
        if links:
            links[0].click()
        i += 1
Run Code Online (Sandbox Code Playgroud)

我知道链接正在工作,因为我看到的输出看起来像这样:

links: [<splinter.driver.webdriver.WebDriverElement object at 0x2e6da10>, <splinter.driver.webdriver.WebDriverElement object at 0x2e6d710>]
links: [<splinter.driver.webdriver.WebDriverElement object at 0x2e6d5d0>, <splinter.driver.webdriver.WebDriverElement object at 0x2e6d950>]
links: [<splinter.driver.webdriver.WebDriverElement object at 0x2e6d710>, <splinter.driver.webdriver.WebDriverElement object at 0x2e6dcd0>]
links: []
Run Code Online (Sandbox Code Playgroud)

使用f.write(browser.html.encode('utf-8'))它在每个页面保存html时,第一页的工作正常.在后续页面中,虽然我可以看到在Firefox中呈现的页面,但html/regiser_...html文件为空或者身体标记缺失如下:

<!DOCTYPE html>
<!--[if lt IE 7]>      <html prefix="og: http://ogp.me/ns#" class="no-js lt-ie9 lt-ie8 lt-ie7"  lang="en-gb"> <![endif]-->
<!--[if IE 7]>         <html prefix="og: http://ogp.me/ns#" class="no-js lt-ie9 lt-ie8"  lang="en-gb"> <![endif]-->
<!--[if IE 8]>         <html prefix="og: http://ogp.me/ns#" class="no-js lt-ie9"  lang="en-gb"> <![endif]-->
<!--[if gt IE 8]><!-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-gb" class="no-js" prefix="og: http://ogp.me/ns#"><!--<![endif]--><head>
        <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible" />    
    ...
  </style>
  <script src="/media/com_magebridge/js/frototype.min.js" type="text/javascript"></script></head></html>
Run Code Online (Sandbox Code Playgroud)

这是从分裂中保存html的已知功能吗?有没有更好的方法呢?

ale*_*cxe 3

它确实看起来像一个计时问题 -当页面未完全加载时您就获取了页面源。有几种方法可以解决这个问题: