使用 curl 从 asp.net 页面获取数据

Posted

技术标签:

【中文标题】使用 curl 从 asp.net 页面获取数据【英文标题】:Get data from asp.net page using curl 【发布时间】:2014-01-17 02:59:55 【问题描述】:

我尝试file_get_content 和 curl 来获取当我在浏览器中打开它时显示的页面数据,但什么也没得到。

URL 在浏览器中打开,但是当我使用 curl 时我重定向到主页,我使用什么方法来完成抓取页面以及响应中的所有数据。

函数卷曲($url) $agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:26.0) Gecko/20100101 Firefox/26.0"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $data = curl_exec($ch); $info = curl_getinfo($ch); 打印_r($信息); echo "卷曲错误".curl_error($ch); curl_close($ch); 回显$数据; 返回$数据; $secState = '70'; $rankYear = 2013; $url = 'https://tennislink.usta.com/tournaments/rankings/rankinghome.aspx#Action=1&SectionDistrict='.$secState.'&Year='.$rankYear.'&Division=G8&ListType=0'; 回声 $url; $html=curl($url); 回声 $html;

【问题讨论】:

【参考方案1】:

您确定您的网址正确吗? &SectionDistrict 之间有一个 whitesapce 字符

你可以用下面的方法再试一次

    $url = 'https://tennislink.usta.com/tournaments/rankings/rankinghome.aspx#Action=1&SectionDistrict='.$secState.'&Year='.$rankYear.'&Division=G8&ListType=0';

这个网址也应该适用于file_get_contents

【讨论】:

不,实际上我在这里@*** 格式化问题,这只是一个格式化错误,在实际代码中没有错误。站点在 ASP.net 中,并且正在执行 _dopostback 以获取内容,我认为存在一些问题,由于 javascript dopostback 功能,我无法获取数据。我不知道如何解决这个问题。 如果使用ajax拉取数据,您可以使用浏览器的DeveloperTools并监控发送数据以确定正确的url、方法和参数。在您的情况下,您必须发送 POST 请求并添加大量数据。也许,您必须解析 https://tennislink.usta.com/tournaments/rankings/rankinghome.aspx 的内容才能为发布请求添加所有必要的隐藏字段

以上是关于使用 curl 从 asp.net 页面获取数据的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net 使用 ajax (javascript) 从布局页面中的 api 控制器获取数据

将数据从 javascript 传递到 asp.net core 2 razor 页面方法

ASP.NET MVC Web App 从 MySQL 数据库中获取不完整的数据

如何在 ASP.net 页面中获取母版页的 Div?

从 ASP.NET Core Razor 页面获取 DisplayAttribute.Prompt

从 sql 数据源获取数据到 asp.net 控件中