У меня есть скрипт, который анализирует определенные элементы с веб-страницы и сохраняет их в mysql db. Все работает нормально, пока я не попытаюсь разделить элемент и сохранить полученные данные в db. Какие-нибудь идеи, что может быть неправильным? Вот страница, которую я обрабатываю: 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
Я не думаю, что вы можете использовать find()
на simple_html_dom()
.
Попробуй это:
$data = new simple_html_dom(); $data->file_get_html($url); $profName = $data->find("//*[@id=profName]", 0);
Эта ссылка дает отличный базовый пример.