|
|
1
3
LXML根本帮不了你。它根本不关心前端渲染。 要准确计算出某个对象的渲染方式,需要对其进行渲染。为此,您需要钩住浏览器,生成页面并在页面上运行一些JS,以找到DOM元素并获取其属性。 这是完全可能的,但我认为你应该先看看网站截图工厂是如何工作的(因为他们会分享你启动浏览器并显示正确页面所需的90%代码)。 您可能仍然希望使用lxml将您的javascript注入页面。 |
|
|
2
1
我同意 Oli ,呈现有问题的页面和通过javascript检查dom是imho最实用的方法。 你可能会发现 jQuery 这里非常有用:
相关文件是 here . |
|
|
3
1
是的,Javascript是一种方法: var等位基因=document.getElementsByTagname(“*”);将选择页面中的所有元素。 然后您可以通过这个循环,从每个元素中提取您需要的信息。有关获取元素尺寸和位置的良好文档 is here. GetElementsByTagname返回一个节点列表而不是数组(因此,如果您的JS更改了HTML,那么这些更改将反映在节点列表中),因此我将尝试将数据构建到Ajax日志中,并在完成后将其发送到服务器。 |
|
|
4
1
我无法找到任何简单的解决方案(如Java/Perl/Python),以钩住WebKe/GECKO来解决上述渲染问题。我能找到的最好的是 Lobo rendering engine 用Java编写的,它有一个非常明确的API,它可以实现我想要的——访问DOM和HTML元素的呈现属性。 JRex 是一个Java封装的GECKO渲染引擎。 |
|
|
5
1
您有三个主要选项: 1) http://www.gnu.org/software/pythonwebkit 是基于WebKit的; 2)用于访问MSHTML的python comtypes(仅限Windows) 3)基于xulrunner的hulahop(python xpcom) 您应该获取Pyjamas桌面源代码,并在pyjd/目录中查找“startup”代码,该代码允许您创建Web浏览器应用程序,并在引擎调用“page loaded”回调后开始操作DOM。 您可以执行节点遍历,并可以访问所需的DOM元素的属性。您可以查看pyjamas/library/pyjamas/dom.py模块,了解您需要使用的许多东西,以便完成您想要的工作。 但是如果上面的三个选项不够,那么你应该阅读这一页。 http://wiki.python.org/moin/WebBrowserProgramming 更多的选择,其中许多已经被其他人提到这里。 L. |
|
|
6
0
你可以考虑看看 WWW::Selenium . 用它(和) selenium rc )您可以从Perl内部操纵字符串ie、firefox或safari。 |
|
|
7
0
问题是,当前的浏览器呈现的内容并不完全相同。如果您正在寻找符合标准的方式来做事情,那么您可以用Python编写一些东西来呈现页面,但这将是一项非常艰巨的工作。 你可以用 wxHTML control from wxWidgets 单独呈现页面的每个部分以了解其大小。 如果你有Mac电脑,你可以试试。 WebKit . 同一篇文章对其他平台上的解决方案也有一些建议。 |