Получение содержимого сайта с помощью сканера
Я пишу простой php сканер, который получает данные с веб-сайта и вставляет их в мою базу данных. Я начинаю с предопределенного URL. Затем я просматриваю содержимое страницы (из php's file_get_contents) и в конце концов использую file_get_contents в ссылках этой страницы. URL-адреса, которые я получаю по ссылкам, хороши, когда я повторяю их, а затем открываю их из своего браузера самостоятельно. Тем не менее, когда я использую file_get_contents и затем отображаю результат, страница не отображается правильно из-за ошибок, связанных с динамически создаваемыми серверными данными с сайта. Содержимое страницы echo'd не включает перечисленные данные с сервера, который мне нужен, потому что он не может найти необходимые ресурсы для сайта.
Похоже, относительные пути на веб-странице echo'd не позволяют генерировать желаемый контент.
Кто-нибудь может указать мне правильное направление здесь?
Любая помощь приветствуется!
Вот немного моего кода на данный момент:
function crawl_all($url)
{
$main_page = file_get_contents($url);
while(strpos($main_page, '"fl"') > 0)
{
$subj_start = strpos($main_page, '"fl"'); // get start of subject row
$main_page = substr($main_page, $subj_start); // cut off everything before subject row
$link_start = strpos($main_page, 'href') + 6; // get the start of the subject link
$main_page = substr($main_page, $link_start); // cut off everything before subject link
$link_end = strpos($main_page, '">') - 1; // get the end of the subject link
$link_length = $link_end + 1;
$link = substr($main_page, 0, $link_length); // get the subject link
crawl_courses('https://whatever.com' . $link);
}
}
/* Crawls all the courses for a subject. */
function crawl_courses($url)
{
$subj_page = file_get_contents($url);
echo $url; // website looks fine when in opened in browser
echo $subj_page; // when echo'd, the page does not contain most of the server-side generated data i need
while(strpos($subj_page, '<td><a href') > 0)
{
$course_start = strpos($subj_page, '<td><a href');
$subj_page = substr($subj_page, $course_start);
$link_start = strpos($subj_page, 'href') + 6;
$subj_page = substr($subj_page, $link_start);
$link_end = strpos($subj_page, '">') - 1;
$link_length = $link_end + 1;
$link = substr($subj_page, 0, $link_length);
//crawl_professors('https://whatever.com' . $link);
}
}
1 ответ
Попробуйте заранее html dom parser. Это здесь.... http://sourceforge.net/projects/advancedhtmldom/