【问题标题】:Redirecting twice to a website重定向到一个网站两次
【发布时间】:2012-12-31 07:07:36
【问题描述】:

我正在网站中构建字典。我调用原始站点 (www.rae.es) 的术语定义,并将它们的 css 更改为我自己的一个。代码如下:

<?php
    $word = $_REQUEST['word'];


    $url = "http://lema.rae.es/drae/srv/search?val={$word}";

    $css = <<<EOT

    <style type="text/css">
    @font-face {
                font-family: 'brannboll_fetregular';
                src: url('brannbollfet-webfont.eot');
                src: url('brannbollfet-webfont.eot?#iefix') format('embedded-opentype'),
                    url('brannbollfet-webfont.woff') format('woff'),
                    url('brannbollfet-webfont.ttf') format('truetype'),
                    url('brannbollfet-webfont.svg#brannboll_fetregular') format('svg');

                }

    .a
       {
        color: #ffe200;
        margin-top:20px !important;
       }
    .f
       {
         margin-left:20px !important;
         margin-top:10px;
         font-size: 200%;
         color: #ffe200;
         font-family: 'brannboll_fetregular';

       }
    .o
       {
         font-size: 80%;
         color: #ffe200;
         margin-left:10px;
         font-family: 'Belgrano', serif;
        }
    .q {
        margin-left:10px;
        font-family: 'Belgrano', serif;
        }
    .k {
        margin-left:10px;
        font-family: 'Belgrano', serif;
        }
    .p {

        font-family: 'Belgrano', serif;
        }     
    img
        {
        visibility:hidden;
         }

    </style>
    EOT;

    $data = file_get_contents($url);
    $data = str_replace('<head>', $css.'</head>', $data);
    $data = str_replace('<span class="f"><b>.</b></span>', '', $data);
    echo '<div id="result1"
      style="
      top: 77%;
      left: 55%;
      overflow:scroll; 
      width:400px; 
      height:300px;
      border: 1px solid #000000;
      border-radius: 15px;
      background-opacity: 0.5;
      background: #047C8F;
      -webkit-border-radius: 15px;
      -moz-border-radius: 15px;
      box-shadow: inset 0px 3px 13px #000000;
      -moz-box-shadow:
                   0px 3px 13px rgba(000,000,000,0.5),
                   inset 0px 0px 13px rgba(0,0,0,1);
      -webkit-box-shadow:
                   0px 3px 13px rgba(000,000,000,0.5),
                   inset 0px 0px 13px rgba(0,0,0,1);
     ">
     '.$data.' 
     </div>';
        ?> 

现在,有时会出现一些建议。例如:http://lema.rae.es/drae/?val=casa。如果您搜索“casa”,您将提出 3 条建议。现在,如果在我的站点中单击这些超链接,我将被重定向到错误页面。所以,我现在解决方案掌握在 php 手中,我只是不知道从哪里开始。 谢谢!

【问题讨论】:

    标签: php css screen-scraping output


    【解决方案1】:

    如果您查看从http://lema.rae.es/drae/?val=casa 获得的 HTML,您会发现您的建议链接是相对链接:

    在将它们发送给用户之前,您应该将它们更改为绝对链接。你可以这样做:

    更好的解决方案是使用 DOMParser 来解析来自服务器的响应,并使用 CSS 选择器或 xpath 来查找链接并重写它们的 href 属性。看看DOMCrawler Symfony component

    【讨论】:

      【解决方案2】:

      链接指向的文件显然在您的服务器上不存在。您可以编写一些东西来处理对文件的请求(例如,使用 mod_rewrite 重写或 nginx“位置”),或者在将 HTML 发送给用户之前扫描返回的 HTML 代码以查找这些链接并修复它们。

      你确定你的行为是合法的吗?看起来您正在复制另一个网站的内容并将其作为您自己的内容传递出去。除非网站明确允许,否则您绝对应该这样做。

      【讨论】:

      • 1) 我如何“修复”扫描的链接。 2)只要我不赚钱就合法
      • 找到它们并将它们替换为指向您的脚本之一的链接(然后应该显示正确答案)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      相关资源
      最近更新 更多