我想为 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>
是否可以使用我的代码转到下一页?我该怎么办?
最佳答案
您必须:
深入分析他们的 JavaScript,并对获取特定页面所需的 POST 值进行一些逆向工程。您可以使用 Firebug 或 Chrome 开发者工具 WebView 查看发送了哪些请求。网址肯定是
<http://www.starcomics.com/UsciteMensili.aspx?AspxAutoDetectCookieSupport=1
但只需发布受监控的“看起来很有趣”的字段
__ASYNCPOST:true __EVENTTARGET=ctl00$ContentPlaceHolder1$DataPager2$ctl00$lnkNextPage
还不够。
- 或者,您可以使用一些实际执行 JavaScript 的 headless 浏览器实现。它们的设置会更加复杂,性能也会降低,但您不必再关心加载页面背后的逻辑。我认为最常用的 headless 浏览器是 PhantomJS ,但我不知道是否以及如何在 Windows Phone 和 C# 中使用它,您可能希望在自己的服务器上设置它并代理数据。
关于C# 和 JS 函数的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22052488/