我正在编写一个简单的php爬虫,它从网站获取数据并将其插入我的数据库。我从一个预定义的URL开始。然后我浏览页面的内容(来自php的file_get_contents)并最终在该页面的链接上使用file_get_contents。当我回复它们然后从我的浏览器中打开它们时,我从链接获取的URL很好。但是,当我使用file_get_contents然后回显结果时,由于与从站点动态创建的服务器端数据相关的错误,页面无法正确显示。 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);
}
}