【问题标题】:How to search on any website in Website Scraping如何在网站抓取中的任何网站上进行搜索
【发布时间】:2016-06-20 06:05:02
【问题描述】:

我正在开发一个使用 DOM 解析从网站上抓取数据的项目。它可以使用该页面 url 从特定网站中提取数据。

我想添加将 php 变量传递到该网站的搜索框的功能。并搜索该查询。当用户在网站搜索框中手动输入一个值并按下搜索时,就会出现结果,我们选择该结果。我想以编程方式执行此操作。

如何将我的 php 变量传递到网站搜索框并在该网站上搜索?

【问题讨论】:

  • 你不能。您可以做的是查看该网站如何格式化其搜索 URL,然后使用 PHP 以该格式构建 URL 并向搜索结果页面发出请求。

标签: javascript php dom web-scraping html-parsing


【解决方案1】:

您必须检查并查看表单的工作方式 - 数据发布到哪个端点。然后在您的脚本中执行相同的操作并处理结果(可能以各种不同的格式提供服务 - JSON、HTML、XML 等)。有时可能会增加安全性,特别是如果它是使用视图状态的 .NET 站点。

【讨论】:

    【解决方案2】:

    一个有点直截了当的建议是在提交表单时运行一个脚本,该脚本在您的工作目录中的每个网页中搜索文本以找到匹配项,然后显示一个包含指向找到的匹配项的链接的页面。

    我将使用 PHP 来描述这是如何完成的。

    考虑到这一点,首先学习如何将整个页面(即网页)读入字符串: http://php.net/manual/en/function.file-get-contents.php

    //YOU WILL HAVE TO LINE THIS UP WITH YOUR WORKING FILE NAMES
    $home = file_get_contents('./home.php', FILE_USE_INCLUDE_PATH);
    

    或者我想你可以像这样搜索实际的网页/URL:

    $home = file_get_contents('http://www.example.com/');//IMAGINE THIS IS REALLY HOME.PHP
    $homePageName = "home.php";//JUST HERE TO SHOW AN EXAMPLE
    

    例子:

    ///YOUR FORM/INPUT BOX
    <form action="search.php" method="post">
        <input type="text" name="findMe" placeholder="Search...">
    </form>
    

    现在搜索.php

    $search = $_POST['findMe'];
    //$search = "example";//THIS WOULD WORK, BUT I WAS SHOWING HOW TO USE FORM
    
    //IF WORD FOUND IN HOME PAGE
    if (stripos($home, $search) !== false) {//USING EXAMPLE.COM TO SHOW IT WORKS
        echo '<a href="'.$homePageName.'">'.$homePageName.'</a>';
    }
    

    然后,如果您想简单化并且不使用数组来存储找到的页面,请使用上面的相同代码并将其用于您要搜索的每个页面(即主页、关于、产品等)。

    现在用户可以搜索您的网站(或您要编入索引的页面),以查找所有具有匹配文本的页面。如果您想要搜索特定的关键字,只需将它们添加到页面元数据中,我描述的过程仍然可以工作,因为它会搜索构成页面的所有内容。

    <meta name="keywords" content="keyword1, keyword2, keyword3 " />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 2012-12-16
      • 2019-01-11
      • 1970-01-01
      • 2014-08-25
      • 2012-02-24
      • 1970-01-01
      相关资源
      最近更新 更多