【问题标题】:Check if python urlopen has finished loading检查 python urlopen 是否已完成加载
【发布时间】:2012-04-03 10:16:46
【问题描述】:

我正在使用漂亮的汤写一个页面scraper,并且注意到它有时会尝试解析一个页面,即使它还没有完全加载。

我正在做的是这样的:

soup = BeautifulSoup(urllib.urlopen(page))

我对 Python 不是很好,但我认为一定有办法让我知道页面已完成加载,因此我可以开始抓取它。

我知道它不会等到它全部加载完毕的原因是,脚本在大多数情况下都可以工作,但有时会出错,说我在页面上寻找的元素不存在(还)

谁能帮我解决这个问题?

【问题讨论】:

    标签: python screen-scraping urllib


    【解决方案1】:

    尝试将所有内容读入字符串:

    html = urllib.urlopen(page).read()
    soup = BeautifulSoup(html)
    

    虽然 BS 文档说传递打开的文件对象很好,但像这样尝试是个好主意。 如果它仍然失败,则意味着它根本与 BS 无关。在这种情况下,print html 以查看您收到的内容。也许这只是因为您在从您的 python 脚本或类似的东西访问它时没有登录到该站点。

    【讨论】:

      【解决方案2】:

      您尝试加载的页面中是否可能存在一些 JavaScript?这可能会阻止它完全加载 - 如果它只是一个普通的静态网页 .urlopen() 应该没问题...如果 JavaScript 确实是问题,您可以尝试使用 PyQt4 之类的方法来加载页面然后提取 HTML,或使用浏览器像 Selenium 或 Windmill。

      【讨论】:

        猜你喜欢
        • 2012-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多