1

我开发了一个网络爬虫来搜索我公司网站上的某些标签,以确保它们是实时的,有谷歌分析,等等。但是,我的公司有近百个网站,所以实际的爬取过程实际上就是爬取。所以我想创建一个表单,用户输入我们其中一家公司的网址,它只抓取那个网站。我不擅长使用表单,所以我基本上希望表单做的是存储用户输入的 url,然后重定向到另一个页面,在该页面中将 url 提供给爬虫并显示结果。这基本上是我到目前为止所拥有的,不多,我无法重定向到不同的页面并存储 URL 变量,因此我可以将它传递给我拥有的爬虫代码。

<div id="main-content" class="mc-left"> <div class="entry"> <div style="position:absolute; margin-left:520px; height:25px; width:120px; font-size:10px;"> </div>
</div>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>

<form name="form1" id="form1" method="POST" action="submitcrawler.php">
    <div class="hiddenfields">
    <p>Website Address:<br>
    <input name="websiteaddress" type="text"></p>
    <input type="submit" class="submit" name="submit"  value="Submit">          
</form>

如您所见,我希望此表单将我带到 submitcrawler.php,但是,当我创建该 php 文件时,当我点击提交时,它会将我带到当前的 slug (../crawler-2/submitcrawler.php 而不是 . ./submitcrawler.php) 所以它会抛出 404 错误

4

5 回答 5

1

该表单正在提交到与您正在查看的文件位于同一文件夹中的“submitcrawler.php”,因此如果它在 /crawler-2/ 中,那么它就是它的查找位置。

使用 ../ 如果你想提升到上面的目录,或者可能更好,使用 / 并输入从 web 根目录到文件的路径(apache / web 服务器可查看的顶级目录)。

所以

<form action="../submitcrawler.php">

或者

<form action="/submitcrawler.php">
于 2012-07-25T16:20:44.757 回答
1

对于您正在寻找的功能,您可以尝试使用method="GET". 这样,您可以在 URL 中看到正在传递给其他 PHP 脚本的信息。

然后只需在其他 PHP 脚本中检索信息:

if(isset($_GET['websiteaddress'])) {
    $websiteaddress = $_GET['websiteaddress'];
} else {
    echo "No web address was received.";
}

在表单属性方面,如果脚本都是静态的,则action需要使用绝对路径,否则如果脚本是动态的并且可能会更改服务器上的位置,则使用相对路径

路径信息:

http://en.wikipedia.org/wiki/Path_%28computing%29

http://webdesign.about.com/od/beginningtutorials/a/aa040502a.htm

于 2012-07-25T16:28:52.040 回答
0

如果您正在谈论的文件位于 crawler-2 目录下,除非您使用相对路径,否则它将提交表单到该文件../submitcrawler.php

于 2012-07-25T16:18:53.040 回答
0

您在该表单上设置的操作会将其发送到与当前脚本位于同一目录中的 submitcrawler.php。尝试将操作更改为 ../submitcrawler.php,或者将其设置为脚本的绝对 url (http://mydomain.me/submitcrawler.php)

于 2012-07-25T16:19:01.480 回答
0

您在发布操作值中使用了相对路径。例如,如果你的爬虫脚本在你的 webroot 中,你应该使用 action="/submitcrawler.php"。如果没有,您可以执行类似 action="/path/to/submitcrawler.php" 的操作

于 2012-07-25T16:19:52.453 回答