【问题标题】:fetch remote page title via ajax vs php通过 ajax vs php 获取远程页面标题
【发布时间】:2012-03-30 00:07:22
【问题描述】:

请帮忙,澄清这个问题,我现在在很多网站上都看到过,你输入网址,它会返回标题和描述以及图像(例如 Facebook),他们是如何做到的?通过本地主机上的 ajax 尝试,我遇到了同源策略问题。

如果不是 ajax,你可以在服务器端(php 或 .net)使用网络流吗?

我查看了 stackoverflow 并找不到答案。谢谢。

【问题讨论】:

    标签: ajax same-origin-policy urlfetch


    【解决方案1】:

    要从另一个 Web 客户端读取 Ajax 不起作用,在 C# 中我们使用

    System.Net.WebClient wc = new System.Net.WebClient();
    byte[] response = wc.DownloadData(fileName);
    sContents = System.Text.Encoding.UTF8.GetString(response);
    

    阅读内容意味着解析文本并使用正则表达式查找某些标签,我发现没有库会做这些可怕的活动,所以我不得不自己做

    标题

    Match TitleMatch = Regex.Match(strIn, "<title>([^<]*)</title>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    

    描述

    Match DescriptionMatch = Regex.Match(strIn, "<meta name=\"description\" content=\"([^<]*)\">", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    

    【讨论】:

      【解决方案2】:

      有一个答案here 关于如何在 PHP 中做到这一点。如果您想使用 Ajax,可以将 JSONP 与 PHP 一起使用。具体如何执行此操作的说明是here

      【讨论】:

      • jsonp 不起作用,因为我试图读取 html 页面的元标记,我希望我知道该 PHP 方法是否可以从 localhost 工作,或者它是否会带来相同的“同源策略”问题
      • ive 终于走上了丑陋的道路,发现 localhost 不影响 php 方法,而使用 ASP.NET 的方法是通过 WebClient 或 StreamReader 函数......但这几乎是不可能的要知道要阅读哪些部分,除非我经过大量的解析:(
      【解决方案3】:

      试着考虑一下:

       file_get_contents('http://somesite.com.au'); 
       get_meta_tags('http://somesite.com.au');
      

      更多信息Get information from a web page (title, pictures, heads, etc...)

      【讨论】:

      • 谢谢,但我很确定我尝试了 C# webclient 方法,但我遇到了同样的“同源策略”问题......这个不错的 php 方法是否在 c# 中复制?
      • 可能是这样。我正在研究它,我会尽快回复您。
      • 看看我发现了什么stackoverflow.com/questions/3536800/…
      • 这更具体到 js 内容,我试图获取一个 html,我希望有一种方法可以注入一个 html 页面
      • 让我研究一下。我会回复你的。
      猜你喜欢
      • 1970-01-01
      • 2012-06-04
      • 2014-06-24
      • 1970-01-01
      • 2011-12-02
      • 2018-06-03
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      相关资源
      最近更新 更多