问题标签 [mechanize]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2846 浏览

python - 将多个 html 文件抓取到 CSV

我正在尝试从硬盘驱动器上的 1200 多个 .htm 文件中删除行。在我的电脑上,它们位于“file:///home/phi/Data/NHL/pl07-08/PL020001.HTM”。这些 .htm 文件从 *20001.htm 到 *21230.htm 是连续的。我的计划是最终通过电子表格应用程序将我的数据扔到 MySQL 或 SQLite 中,或者如果我能从这个过程中得到一个干净的 .csv 文件,就直接输入。

这是我第一次尝试编写代码(Python)、抓取,我刚刚在我蹩脚的 pentium IV 上安装了 Ubuntu 9.04。不用说我是新手并且有一些障碍。

如何让 mechanize 按顺序浏览目录中的所有文件。机械化甚至可以做到这一点吗?mechanize/Python/BeautifulSoup 可以读取 'file:///' 样式的 url,还是有其他方法可以将其指向 /home/phi/Data/NHL/pl07-08/PL020001.HTM?以 100 或 250 个文件增量执行此操作还是仅发送所有 1230 个文件是否明智?

我只需要以“”开头并以“ <tr class="evenColor">”结尾的行</tr>。理想情况下,我只想要其中包含“SHOT”|“MISS”|“GOAL”的行,但我想要整行(每一列)。请注意,“目标”是粗体的,所以我必须指定这个吗?每个 htm 文件有 3 个表。

此外,我希望将父文件的名称(pl020001.htm)包含在我抓取的行中,这样我就可以在最终数据库中自己的列中标识它们。我什至不知道从哪里开始。这是我到目前为止所拥有的:

我应该使用 IDLE 还是类似的东西?只是 Ubuntu 9.04 中的终端?

0 投票
2 回答
11316 浏览

ruby - Ruby 中的多部分文件上传

我只是想通过 POST 将图像上传到服务器。这个任务听起来很简单,但在 Ruby 中似乎没有简单的解决方案。

在我的应用程序中,我对大多数事情都使用WWW::Mechanize,所以我也想用它来做这件事,并且有这样的来源:

这会在服务器上产生一个完全可以垃圾的文件,看起来到处乱七八糟:

替代文字 http://imagehub.org/f/1tk8/garbage.png

我的下一步是将 WWW::Mechanize 降级到 0.8.5 版。这一直有效,直到我尝试运行它,它失败并出现“在 hpricot_scan.so 中找不到模块”之类的错误。使用 Dependency Walker 工具,我可以发现 hpricot_scan.so 需要 msvcrt-ruby18.dll。然而,在我将那个 .dll 放入我的 Ruby/bin 文件夹之后,它给了我一个空的错误框,我无法进一步调试。所以这里的问题是 Mechanize 0.8.5 依赖于 Hpricot 而不是 Nokogiri(它完美地工作)。


下一个想法是使用不同的 gem,所以我尝试使用 Net::HTTP。经过短暂的研究,我发现 Net::HTTP 中没有对多部分表单的原生支持,相反,您必须为您构建一个编码等的类。我能找到的最有帮助的是 Stanislav Vitvitskiy 的 Multipart-class。到目前为止,这个类看起来不错,但它并没有做我需要的,因为我不想发布文件,我也想发布普通数据,而这在他的课程中是不可能的。


我最后一次尝试是使用RestClient。这看起来很有希望,因为已经有关于如何上传文件的示例。但是我无法将表单作为多部分发布。

我正在使用http://rest-test.heroku.com,如果发送正确,它会发回调试请求,我总是会得到这个:

这清楚地表明它不是multipart/form-data用作 content-type 而是用作 standard application/x-www-form-urlencoded,尽管它肯定认为那pict是一个文件。


如何在不实现整个编码和数据对齐的情况下将 Ruby 中的文件上传到多部分表单?

0 投票
2 回答
8083 浏览

python - 如何使用机械化获取网页上的链接并打开这些链接

我想用python的mechanize来获取页面的所有链接,然后打开链接。我该怎么做?

0 投票
3 回答
8936 浏览

python - python mechanize可以处理HTTP身份验证吗?

Mechanize (Python) 无法打开 http 摘要 URL,出现 401。我用谷歌搜索并尝试调试但没有成功。

我的代码看起来像这样。

0 投票
4 回答
313 浏览

php - 在客户端缓存 PHP 脚本输出

我有一个 php 脚本,每次调用它时都会输出一个随机图像。因此,当我在网络浏览器中打开脚本时,它会显示一个图像,如果我刷新,则会显示另一个图像。

我试图通过命令行(通过机械化)访问网站来捕获正确的图像。我使用 urllib2.urlopen(...) 来抓取图像,但每次我这样做时都会得到不同的图像。我希望能够始终如一地抓取相同的图像。我怎样才能做到这一点?

谢谢!

更新:这是我正在谈论的一个例子。如果您在网络浏览器中重新加载此图像,则每次都会弹出不同的图像。如果您右键单击并保存,您将获得正确的图像。如果你继续这样做,你会一直得到正确的图像......但是,你是如何从命令行获得的?

http://www.biglickmedia.com/art/random/index.php

0 投票
2 回答
1846 浏览

python - 机械化没有被easy_install安装?

我正在从旧的 Win2K 机器迁移到新的更强大的 Vista 64 位 PC。大多数迁移都进行得相当顺利——但我确实发现我需要重新安装所有与 Python 相关的工具。

我已经下载了 mechanize-0.1.11.tar.gz 文件并运行 easy_install 来安装它。这产生了 C:\Python25\Lib\site-packages\mechanize-0.1.11-py2.5.egg。

然后我运行了一个 python 脚本来测试它,它在解释器下运行良好。但是,当我运行 py2exe 编译脚本时,我收到一条消息,提示找不到 mechanize。

然后我将 egg 移动到一个新文件夹,使用 easy_install 安装它 - 并且得到了它确实安装的所有迹象。

但是,当我尝试使用 py2exe 时,我仍然收到相同的消息 - 机械化不存在!

我搜索了整个磁盘的“机械化”,结果只得到了 2 个鸡蛋文件。安装应该生成哪些文件 - 我应该将它们放在哪里?

显然,我在这里遗漏了一些东西......有什么建议吗?

另外,也许相关的是,我正在运行的 python 是 32 位 2.5.4 版本......这是我以前拥有的,并且希望在安装 64 位版本之前让一切正常运行 - 另外,我没有看到一些似乎支持 64 位版本的工具(easy_install 和 py2exe)。那是问题的一部分吗,我是否需要安装和运行 64 位版本 - 对于那些运行 32 位 PC 的人来说,当他们运行我的脚本时,这会是一个问题吗?

0 投票
2 回答
1308 浏览

ruby - Ruby Mechanize 获取 force_encoding 异常

至少有时当我导航到某个页面时,我会收到此异常

其他人看到这个问题吗?

0 投票
3 回答
5429 浏览

javascript - 用于自动浏览的类似 Greasemonkey 的 Firefox 插件

是否有 Firefox 插件允许用户的 Javascript 代码(如 Greasemonkey)并能够从一个页面浏览到另一个页面?

我想写一个脚本来:

  1. 登录网站。
  2. 按照几个链接。
  3. 使用给定的数据和时间间隔定期向该主机发出 GET 请求。
  4. 根据之前循环请求的结果发出 POST 请求。

现在我使用 Python 的 mechanize 作为浏览器,所以我正在寻找在 Firefox 中具有类似(可能不是那么丰富)功能的东西。你有过这类事情的经验吗?我应该检查什么?

0 投票
1 回答
1661 浏览

javascript - 如何为 Ruby Mechanize gem 添加 JS 支持?

有没有办法添加 JavaScript 支持以实现机械化,以便处理简单的重定向,例如document.location.href=

0 投票
2 回答
2708 浏览

javascript - 需要 javascript 支持的网页抓取网站

可能重复:
从包含大量 Javascript 的网页中抓取屏幕

我只想做表单输入和网页抓取等任务,但在需要 javascript 支持的网站上。而且我还需要在同一个会话中输入表单、抓取等。理想情况下,我想要一种从命令行控制网络浏览器的方法。而且我还想只使用 Linux 来完成这一切,所以我不能使用 .NET。

我找到了 Python 的 webbrowser 库,但它的功能看起来非常有限。如果它可以与 mechanize 和 BeautifulSoup 交互,那就太棒了。有什么建议么?谢谢!