我正在制作网络抓取工具,其目标是允许用户输入搜索字词,点击提交按钮,并接收与其搜索相关的项目列表。
基本上就像搜索引擎一样,但我希望搜索从这里开始,而不是谷歌:https://digitalcommons.colby.edu/special_collections/
下面的脚本大部分都有效,但我希望$searchString
来自表单上的输入字段,然后在单击提交按钮后返回结果列表。我目前正在使用simple_html_dom.php。
非常感谢任何帮助或指示。
<?php
include_once('assets/inc/simple_html_dom.php');
$searchString = "Significant Inventions";
$in = $searchString;
$in = str_replace(' ','+',$in); // space is a +
$url = 'http://www.google.com/search?hl=en&tbo=d&site=&source=hp&q='.$in.'&oq='.$in.'';
echo '<h2>Title: ' . $searchString . '</h2>';
echo '<span>Title: ' . $url . '<span><hr>';
$html = file_get_html($url);
$i=0;
$linkObjs = $html->find('h3.r a');
foreach ($linkObjs as $linkObj) {
$title = trim($linkObj->plaintext);
$link = trim($linkObj->href);
// if it is not a direct link but url reference found inside it, then extract
if (!preg_match('/^https?/', $link) && preg_match('/q=(.+)&sa=/U', $link, $matches) && preg_match('/^https?/', $matches[1])) {
$link = $matches[1];
} else if (!preg_match('/^https?/', $link)) { // skip if it is not a valid link
continue;
}
$descr = $html->find('span.st',$i); // description is not a child element of H3 thereforce we use a counter and recheck.
$i++;
echo '<p>Title: ' . $title . '<br />';
echo 'Link: <a href="' . $link . '" target="_blank">Read More</a><br />';
echo 'Description: ' . $descr . '</p><hr>';
}
?>