сканирование html-страницы с использованием php?

Этот веб-сайт содержит более 250 курсов в одном списке. Я хочу получить имя каждого курса и вставить его в мою базу данных mysql, используя php. Курсы перечислены следующим образом:

<td> computer science</td> <td> media studeies</td> … 

Есть ли способ сделать это на PHP, вместо того, чтобы мне сумасшедший кошмар ввода данных?

Регулярные выражения хорошо работают.

 $page = // get the page $page = preg_split("/\n/", $page); for ($text in $page) { $matches = array(); preg_match("/^<td>(.*)<\/td>$/", $text, $matches); // insert $matches[1] into the database } 

См. Документацию для preg_match.

Вы можете использовать эту библиотеку php для разбора HTML для достижения этой цели: http: //simplehtmldom.sourceforge.net/

Как разобрать HTML- запрос был задан и ответил бесчисленное количество раз. Хотя (для вашего конкретного UseCase) регулярные выражения будут работать, в целом – лучше и надежнее использовать правильный парсер для этой задачи. Ниже описано, как это сделать с DOM :

 $dom = new DOMDocument; $dom->loadHTMLFile('http://courses.westminster.ac.uk/CourseList.aspx'); foreach($dom->getElementsByTagName('td') as $title) { echo $title->nodeValue; } 

Для вставки данных в MySql вы должны использовать расширение mysqli . В StackOverflow достаточно примеров. поэтому, пожалуйста, используйте функцию поиска.

Я столкнулся с той же проблемой. Вот хорошая библиотека классов, называемая html dom http://simplehtmldom.sourceforge.net/ . Это как jquery

Просто для удовольствия, вот быстрый сценарий оболочки, чтобы сделать то же самое.

 curl http://courses.westminster.ac.uk/CourseList.aspx \ | sed '/<td>\(.*\)<\/td>/ { s/.*">\(.*\)<\/a>.*/\1/; b }; d;' \ | uniq > courses.txt