為了加強php語言的學習,自己沒事寫了個小例子,抓取慕課網的課程列表。
就是乙個簡單的小例子,沒用curl等擴充套件只用了原生的php。
流程:
根據url開啟**=>轉成字串=>正規表示式提取資訊=>存入資料庫。
而且有乙個缺點就是因為要開啟的頁面太多,導致網路不好的情況下解析的時間太長了,會報錯停止執行。
正在向方法改進。
下面是抓取的一部分資料:
}//返回課程資訊
return
$courselist;
}/**
* 讀取網頁到為乙個字串
*@param [type] $handle [description]
*@return [type] [description]
*/private
function
get_contents
($handle)
/*** 解析網頁中的課程資訊為陣列
*@param string $content 網頁資訊
*@return array
*/private
function
getdivlist
($content)
";$result = preg_match_all("/([\s\s]*)?/", $content, $match_result);
$divlist = explode('moco-course-wrap',$match_result[0][0]);
return
$divlist;
}/**
* 從陣列中解析出課程資訊
*@param array $divlist 課程陣列
*@return array 課程資訊
*/private
function
getcourse
($divlist)
}return
$courses;
}/**
* 獲取最大頁數
*@param string $content 網頁資訊
*@return string 最大頁數
*/public
function
getmaxpage
($content)
/*** 在字串中提取兩個特定字串之間的資訊
*@param string $string 要分割的字串
*@param string $mark1 第乙個標記字串
*@param string $mark2 第二個標記字串
*@param int $num 標記字串長度
*@return string 提取出的字串
*/public
function
getneedbetween
($string,$mark1,$mark2,$num)
$string=substr($string,($st+$num),($ed-$st-$num));
return
$string;
}}$crawler = new webcrawler;
$courses = $crawler->getdata('');
var_dump($courses);
/*這部分是儲存到資料庫用的,自己改一下就行。*/
// 建立連線
$con = new mysqli("localhost","root", "","mydb");
// 檢測連線
if ($con->connect_error)
// 預處理及繫結
$stmt = $con->prepare("insert into course (title,url,img,introduce,student)
values (?, ?,?,?,?)");
$stmt->bind_param("sssss", $title, $url, $img,$introduce ,$student);
foreach ($courses
as$course)
echo
"新記錄插入成功";
$stmt->close();
//關閉連線
$con->close();
scrapy splash抓取動態資料例子四
本例子用scrapy splash抓取微眾圈 給定關鍵字抓取諮詢資訊。給定關鍵字 打通 融合 電視 抓取資訊內如下 1 資訊標題 2 資訊鏈結 3 資訊時間 4 資訊 針對上面的 資訊,來進行抓取 1 首先抓取資訊列表 抓取 sels site.xpath li class itemtitle 2 ...
scrapy splash抓取動態資料例子八
本例子用scrapy splash抓取介面 給定關鍵字抓取諮詢資訊。給定關鍵字 個性化 融合 電視 抓取資訊內如下 1 資訊標題 2 資訊鏈結 3 資訊時間 4 資訊 針對上面的 資訊,來進行抓取 1 首先抓取資訊列表 抓取 sels site.xpath div contains class,ne...
scrapy splash抓取動態資料例子四
本例子用scrapy splash抓取微眾圈 給定關鍵字抓取諮詢資訊。給定關鍵字 打通 融合 電視 抓取資訊內如下 1 資訊標題 2 資訊鏈結 3 資訊時間 4 資訊 針對上面的 資訊,來進行抓取 1 首先抓取資訊列表 抓取 sels site.xpath li class itemtitle 2 ...