我正处于我正在编写的网络爬虫的最后一条。
网络抓取工具抓取BBC新闻,然后将链接插入数据库以及标题和说明等等。但是我有一个包含所有起始网址的数组,因此只插入以其中任何一个开头的链接
我使用foreach遍历所有链接数组的所有数组变量并检查它们是否符合条件,插入新数组然后将其插入字符串然后插入到mysql数据库中。 / p>
但是,关于我的内爆函数会出现错误。我被卡住了。
$bbc_values = array('http://www.bbc.co.uk/news/health-', 'http://www.bbc.co.uk/news/politics-', 'http://www.bbc.co.uk/news/uk-', 'http://www.bbc.co.uk/news/technology-', 'http://www.bbc.co.uk/news/world-', 'http://www.bbc.co.uk/news/england-', 'http://www.bbc.co.uk/news/northern_ireland-', 'http://www.bbc.co.uk/news/scotland-', 'http://www.bbc.co.uk/news/wales-', 'http://www.bbc.co.uk/news/business-', 'http://www.bbc.co.uk/news/education-', 'http://www.bbc.co.uk/news/science_and_enviroment-', 'http://www.bbc.co.uk/news/entertainment_and_arts-', 'http://edition.cnn.com/');
foreach ($links as $link) {
$output = array(
"title" => Titles($link), //dont know what Titles is, variable or string?
"description" => getMetas($link),
"keywords" => getKeywords($link),
"link" => $link
);
if (empty($output["description"])) {
$output["description"] = getWord($link);
}
foreach ($output as $new_array) {
if (in_array($new_array['link'], $bbc_values)) {
$news_stories[] = $new_array;
}
}
$data = '"' . implode('" , "', $news_stories) . '"';
$result = mysql_query("INSERT INTO news_story (`title`, `description`, `keywords`, `link`) VALUES (" . $data . ")");
答案 0 :(得分:0)
首先,$links
未定义。您的意思是$bbc_value
吗?
否则,你必须关闭第一个foreach(关闭}
缺失)
答案 1 :(得分:0)
在你的foreach
循环中
$news_stories[] = $new_array;
将生成一个数组数组,如下所示
array(
array(
'title'=>'title1',
'description'=>'description1',
'keywords'=>'keywords1',
'link'=>'link1'
),
array(
'title'=>'title2',
'description'=>'description2',
'keywords'=>'keywords2',
'link'=>'link2'
)
);
你正在使用implode
之外的循环
$data = '"' . implode('" , "', $news_stories) . '"';
除非在数组中指定索引,否则不应该起作用。因此,如果您使用以下代码
$data='"' . implode('" , "', $news_stories[0]) . '"';
echo $data;
然后它将从$news_stories
数组中内爆第一个数组项,它将产生以下
"title1" , "description1" , "keywords1" , "link1"
如果您想制作以下
$result = mysql_query("INSERT INTO news_story (`title`, `description`, `keywords`, `link`) VALUES ('title1' , 'description1' , 'keywords1' , 'link1')");
然后你可以使用
$data="'" . implode("' , '", $news_stories[0]) . "'";
所以,如果你写
$result = mysql_query("INSERT INTO news_story (`title`, `description`, `keywords`, `link`) VALUES (" . $data . ")");
然后它会产生
$result = mysql_query("INSERT INTO news_story (`title`, `description`, `keywords`, `link`) VALUES ('title1' , 'description1' , 'keywords1' , 'link1')");