我们有一个旧的Windows窗体应用程序,使用类似于以下的代码
using System.Net;
using System.IO;
using System.Windows.Forms;
string result = null;
string url = "http://www.despegar.cl/shop/flights/results/oneway/ANF/SCL/2016-03-30/1/0/0?from=SB";
WebResponse response = null;
StreamReader reader = null;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
response = request.GetResponse();
reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
result = reader.ReadToEnd();
}
catch (Exception ex)
{
// handle error
MessageBox.Show(ex.Message);
}
finally
{
if (reader != null)
reader.Close();
if (response != null)
response.Close();
}
从despegar cl获取外部网站的源代码,然后获取航班起飞时间表的数据。 问题在于使用AngularJS等框架的页面在运行时替换这些字段。获得的源代码类似于
<span class="hour">{{data.departure.hour.formatted}}</span>
当我们想要找到
时<span class="hour">09:05</span>
如何使用动态字段更新获取数据?
答案 0 :(得分:0)
使用Angular或其他Javascript框架构建的网页在很大程度上无法使用Javascript来处理视图。您最好的选择是运行无头浏览器并抓取生成的HTML。
根据服务器的不同,您可以申请预渲染版本。一些Angular站点为搜索引擎目的这样做,因为搜索引擎爬虫也不运行Javascript并面临您现在所遇到的相同问题。您将需要检查您查询的任何服务,看看是否可以选择。
答案 1 :(得分:0)
您可以随时打开网络查看器并查看它是否从特定端点提取数据,您可能能够设置客户端以达到终点。可能是背景中的json流或xml流。不久前我不得不这样做,发现了一个隐藏的api等价物,我能够查询。