我有一个脚本,可以解析网页中的某些元素并将它们存储在 mysql 数据库中。一切正常,直到我尝试拆分元素并将结果数据存储到数据库中。有什么想法可能是错的吗? 这是我正在解析的页面:http://www.ratemyprofessors.com/SelectTeacher.jsp?sid=953
这是我的代码:
<?php
include('simple_html_dom.php');
//connect to db (code emitted)
prof_List("http://www.ratemyprofessors.com/SelectTeacher.jsp?sid=953");
function prof_name($url)
{
// collect data
echo $url;
$data = new simple_html_dom();
$data->load_file($url);
$profName = $data->find("//*[@id=profName]", 0);
$profName = strip_tags($profName);
echo "Full Name: " . $profName = trim($profName);
list($first, $last) = explode(" ", $profName);
echo "fname: " . $first;
echo "lname: " . $last;
//call mysql function
insert_row($profName, $first, $last);
}
function insert_row($profName, $first, $last)
{
$sql1="INSERT INTO PROFESSOR(name, firstname, lastname) VALUES('$profName','$first', '$last')";
$sql1=strip_tags($sql1);
echo $sql1;
mysql_query($sql1) or die(mysql_error());
echo "Data Inserted!";
}
function prof_List($mainURL)
{
$list = new simple_html_dom();
$list->load_file($mainURL);
$profLinks = $list->find("//*[@class=profName]/a");
foreach($profLinks as $profLink)
{
$profU=$profLink->href;
echo $profURL = "http://www.ratemyprofessors.com/" . $profU;
prof_name($profURL);
}
}
?>
这是我的输出:
Connected to MySQL
Connected to Databasehttp://www.ratemyprofessors.com/SelectTeacher.jsp?the_dept=All&sid=953&orderby=TLName&toggel=truehttp://www.ratemyprofessors.com/SelectTeacher.jsp?the_dept=All&sid=953&orderby=TLName&toggel=trueFull Name: fname: lname: INSERT INTO PROFESSOR1(name, firstname, lastname) VALUES('','', '')Data Inserted!http://www.ratemyprofessors.com/ShowRatings.jsp?tid=861228http://www.ratemyprofessors.com/ShowRatings.jsp?tid=861228
Fatal error: Call to a member function find() on a non-object in /Users/user1/Sites/simple_html_dom.php on line 879
最佳答案
我认为您不能在 simple_html_dom()
上使用 find()
。
试试这个:
$data = new simple_html_dom();
$data->file_get_html($url);
$profName = $data->find("//*[@id=profName]", 0);
This link提供了一个很棒的基本示例。
关于php - 使用 PHP mySQL simpleHTMLDOM 插入数据时调用非对象上的成员函数 find(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335394/