首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ghost.py进行屏幕抓取

使用Ghost.py进行屏幕抓取
EN

Stack Overflow用户
提问于 2013-01-29 11:26:50
回答 4查看 6.9K关注 0票数 1

下面是不起作用的简单程序

代码语言:javascript
复制
from ghost import Ghost

ghost = Ghost(wait_timeout=40)
page, extra_resources = ghost.open("http://samsung.com/in/consumer/mobile-phone/mobile-phone/smartphone/")
ghost.wait_page_loaded()
n=2;
links=ghost.evaluate("alist=document.getElementsByTagName('a');alist")
print links

错误为:引发异常(Timeout_message)

异常:无法加载请求的页面

iS程序有什么问题吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-29 12:23:19

似乎人们报告了与您类似的问题,但却没有真正得到任何解释(例如:https://github.com/jeanphix/Ghost.py/issues/26)

将evaluate行调整为ghost.py文档所引用的内容:

代码语言:javascript
复制
links = gh.evaluate("""
                        var links = document.querySelectorAll("a");
                        var listRet = [];
                        for (var i=0; i<links.length; i++){
                            listRet.push(links[i].href);
                        }
                        listRet;
                    """)
票数 3
EN

Stack Overflow用户

发布于 2013-05-27 15:05:11

当我第一次使用Ghost.py时,我尝试的每个页面都会出现这个错误,我解决这个问题的方法是废弃PyQt,转而安装PySide。不管怎么说,这帮我解决了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2013-11-17 11:21:28

我不得不在ghost.py wait_for_page_loaded函数中添加额外的逻辑:

代码语言:javascript
复制
    reTmp = str(resource.url)
    if "PyQt4" in reTmp:
        reTmp = str(reTmp).replace("PyQt4.QtCore.QUrl(u\'", "").replace("\')","")
    if url == reTmp:
        page = resource

PyQt在resource.url中添加了愚蠢的垃圾,因此url==resource.url永远不能正确加载页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14575181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档