【发布时间】:2011-09-17 20:34:06
【问题描述】:
我有一个小爬虫,我需要在其中使用 JavaScript 单击锚链接。我尝试了几种方法:jQuery.click()、document.createEvent('MouseEvents') 等。它们都可以正常工作,但是它们并没有像人工点击那样完全执行(它们会像应该那样打开一个标签,但不会开始下载) .
锚标签有这个属性:
onclick="if (document.getElementById('ReportViewer_ctl01_ctl05_ctl00').selectedIndex == 0) return false;
if (!ClientToolbarReportViewer_ctl01.HandleClientSideExport()) __doPostBack('ReportViewer$ctl01$ctl05$ctl01','');return false;"
我也尝试在命令行中解决这个问题:
__doPostBack('ReportViewer$ctl01$ctl05$ctl01','')
这也有点作用,但不完全像人工点击。
如果需要,我可以详细介绍,但目前我正在寻找我认为应该存在的灵丹妙药。
【问题讨论】:
-
为什么不使用
PHP cURL访问所需的uri(如果您使用PHP作为服务器端语言)? -
我认为这种差异有一个基于安全的故意原因;似乎是为了防止偷渡式下载/ EULA 接受等。虽然我可能很可怕,hideously 错了。
-
@yoda 谢谢,不使用 php,它是杂乱无章的东西。这个链接实际上是提交一个表单来模拟下载。
-
@beck 那么你是如何在页面上注入 javascript 的呢?提及与主题相关的所有内容总是有用的。
-
this also sort of works but not fully like a human click.- 你能解释一下你所说的“某种作品”是什么意思吗? b/c 这种方法应该可行。
标签: javascript web-crawler web-scraping