使用浏览器在页面(客户端)上运行自定义JavaScript来模拟点击?怎么做
Use browser to run custom JavaScript on page (client side) to simulate clicking? How to do?
我想自动从页面中获取一些内容。
我想知道这是否可能:
-
页面加载后,在页面上运行我自己编写的JavaScript(我使用FireFox。我没有能力更改页面内容。我只想在浏览器上运行JS。)。脚本将使用
getelementbyid
或类似方法获得下一页的链接 -
运行JavaScript来收集我在该页面上感兴趣的内容(一些URL),并将这些URL存储在本地文件中
-
转到下一页(我的浏览器会真正加载下一页,但我根本不需要干预),然后重复步骤1和步骤2,直到没有下一页为止。
实现这一点的经典方法是使用LWP编写Perl脚本或使用CURL等编写PHP脚本。但这都是服务器端的问题。我想知道我是否可以在客户端完成。
实际上,我做了一些类似的事情。
通过使用GreaseMonkey,您可以编写一个用户脚本,该脚本将根据需要与页面交互。您可以获得下一页链接,并根据自己的喜好滚动内容。
您还可以通过一些名为GM_getValue和GM_setValue的新函数在Firefox中本地存储任何数据。
我采取懒散的方式。我只是生成一个长长的URL列表,这些URL是我在浏览页面时找到的。我做了一个粗糙的"document.write"方法,并将我的URL列表转储为一个批处理文件,该文件在wget
上进行规则处理。
在这一点上,我复制并粘贴批处理文件,然后运行它
如果你需要经常运行它,它应该是自动化的,使用可以将GreaseMonkey脚本转换为Firefox扩展,从而获得更强大的功能。
另一个选项目前是AFAIK,仅Chrome。您可以收集所需的任何信息,并从中构建一个大文件,然后使用链接的download
属性,单击即可保存内容。
更新
我本来打算分享我正在做的事情的完整代码,但它与特定的网站联系在一起,不会有真正的帮助——所以我会选择一个更"通用"的解决方案。
警告,此代码是动态键入的,实际可能不正确。
// Define the container
// If you are crawling multiple pages, you'd want to load this from
// localStorage.
var savedLinks = [];
// Walk through the document and build the links.
for (var i = 0; i < document.links.length; i++) {
var link = document.links[i];
var data = {
url: link.url,
desc = getText(link)
};
savedLinks.push(data);
}
// Here you'd want to save your data via localStorage.
// If not on the last page, find the 'next' button and load the next page
// [load next page here]
// If we *are* on the last page, use document.write to output our list.
//
// Note: document.write totally destroys the current document. It really is quite
// an ugly way to do it, but in this case it works.
document.write(JSON.stringify(savedLinks, null, 2));
Selenium/webdriver将允许您编写一个简单的java/ruby/php应用程序,该应用程序将启动Firefox,并使用其JavaScript引擎在浏览中与页面交互。
或者,如果网页不需要JavaScript来提供你感兴趣的内容,你可以使用你喜欢的语言的html解析器,而不使用浏览器。
如果你想在Firefox中用JavaScript做这件事,你可能可以用一个防油渍的脚本
- 不使用jquery模拟Javascript中的按键
- 使用 Scrapy 模拟 JavaScript 按钮点击
- 是否可以在Java中模拟Javascript风格的原型
- 使用element.click()来模拟Javascript中的Button click
- 如何模拟JavaScript对象或数组中缺少的属性或元素
- 如何在 Mechanize 中模拟 javascript
- 是否有一组限制可用于模拟JavaScript中的函数式编程
- 在 Android 中使用多个 Web 视图来模拟 Javascript 线程
- 有没有更好的方法来模拟JavaScript中的指针
- 模拟 javascript 的数组方法.面向对象的Javascript,作者:Stoyan Stefanov
- 模拟JavaScript以从下拉列表中选择
- 如何在Ruby中模拟JavaScript的逐位操作中截断大整数
- 模拟javascript点击X,Y点(用于控制银光播放器)
- Iphone->如何模拟javascript点击操作
- 如何在webview中调用或模拟javascript函数
- 表单提交模拟- Javascript菜单
- 使用c#模拟javascript _dopostback
- 将网页上的模拟javascript终端窗口保持在固定位置
- 在没有setTimeout的情况下模拟JavaScript中的文本键入效果
- 如何通过移动用户的 href 链接模拟 javascript onClick 事件