【问题标题】:C# and links to JS functionsC# 和 JS 函数的链接
【发布时间】:2014-02-27 16:44:06
【问题描述】:

我想为 WP8 创建一个显示网页内容的应用程序。我还没有编写代码,但我知道我可以使用 xpath 获取页面内容。我的问题是我要获取的内容不在单个页面中。我必须按“下一步”按钮才能转到下一页。按钮的代码是这样的。

<td class="pager-next" style="padding:0;margin:0;">
       <a id="ctl00_ContentPlaceHolder1_LinkButton2" class="buttondiego buttondiego_small buttondiego_arrow" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$LinkButton2','')"></a>
</td>

这是头文件中的JS函数:

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['aspnetForm'];
if (!theForm) {
    theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>

是否可以使用我的代码转到下一页?我该怎么办?

【问题讨论】:

标签: c# javascript html xpath windows-phone-8


【解决方案1】:

您必须:

  • 深入分析他们的 JavaScript,并对所需的 POST 值进行一些逆向工程以获取特定页面。您可以使用 Firebug 或 Chrome 开发者工具网络视图查看发送了哪些请求。网址肯定是

    <http://www.starcomics.com/UsciteMensili.aspx?AspxAutoDetectCookieSupport=1
    

    只是发布监控的“看起来很有趣”的字段

    __ASYNCPOST:true
    __EVENTTARGET=ctl00$ContentPlaceHolder1$DataPager2$ctl00$lnkNextPage
    

    还不够。

  • 或者,您可以使用一些实际执行 JavaScript 的 headless browser 实现。它们的设置会更复杂,性能也会更低,但您不必再关心加载页面背后的逻辑。我认为最常用的无头浏览器是PhantomJS,但我不知道是否以及如何在 Windows Phone 和 C# 中使用它,您可能希望在自己的服务器上设置它并代理数据。

【讨论】:

  • 每次我在查询字符串中输入内容时都会收到错误消息 > 运行时错误描述:服务器上发生应用程序错误。此应用程序的当前自定义错误设置阻止远程查看应用程序错误的详细信息(出于安全原因)。但是,本地服务器计算机上运行的浏览器可以查看它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
相关资源
最近更新 更多