【问题标题】:Scripted Browser Scapper [closed]脚本浏览器 Scapper [关闭]
【发布时间】:2012-07-22 04:35:12
【问题描述】:

我可以使用什么来实现以下目标,编写浏览器脚本或以其他方式向服务器发出请求,登录,浏览网站,例如。查找链接并导航到这些链接。

现在,由于我对 NodeJS 感兴趣,所以我正在研究 node.io。它使您可以很容易地抓取网站,但问题是当我尝试发布(登录)时,我什么也得不到!

nodeio = require "node.io"

nodeio.scrape ->

    @post "http://localhost/auth/login", {
        username: "username"
        password: "password"
    }, ->

        console.log "=====After Login====="

但我只是明白了

OK: Job complete

即使登录失败,我也应该在登录后到达console.log


然后我想通过编写浏览器脚本来实现这一点可能更好,它会更接近地模拟真实请求?

【问题讨论】:

    标签: node.js scraper node.io


    【解决方案1】:

    Selenium 或 Watir 允许您编写浏览器脚本。它们使用实际的浏览器,因此它们会比较低级别的工具慢,但它们可以完成浏览器所做的一切(即 JavaScript)。

    【讨论】:

    • 我已经尝试过 Zombie.JS 路由,该路由似乎在某些站点(不受我控制)上不起作用,可能他们检测到它可能是机器人连接或其他东西,并拒绝连接。所以我要走 Selenium 路线,可行,但它的速度较慢,对我来说太慢了,但我想我可以让它继续运行。我认为缓慢的原因是每次我执行get(url) 时,它都会等待整个页面(包括任何广告或脚本)呈现后再继续?
    • 我知道 Watir 等待整个页面加载(但不是脚本)。我听说 Selenium 没有,但他们可能已经改变了这一点。
    【解决方案2】:

    node.io 似乎是一个很好的工作工具,但我也推荐zombie.js。它似乎主要用于测试,但文档看起来也非常适合抓取。

    如果你想走脚本浏览器路线,请忽略我的回答。 :)

    【讨论】:

    • 似乎有些网站阻止了我的连接,或者它无法正常工作,因为 Zombie/NodeIO 可能是为了测试/访问您控制的网站?也许我需要设置用户代理等?
    • 是的,您正在抓取的网站可能会检查您的用户代理,或者每个客户端/IP 有 API 速率限制。
    • 嗯...我怎样才能让 Zombie/NodeIO 的行为更像一个真正的浏览器?像用户代理一样发送正确的 HTTP 标头会起作用吗?真正的浏览器通常会发送哪些标头?
    • 你总是可以在 localhost 上运行一个小节点服务器,用浏览器执行 GET 并打印出所有标题,直接复制浏览器的行为:)
    猜你喜欢
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 2022-12-16
    • 2016-10-31
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多