本文目錄一覽:
- 1、php 百度 知道數據採集
- 2、php怎麼抓取其它網站數據
- 3、php 定義一個二維數組,存儲多部電影的信息.並使用foreach將電影信息顯示到表格中
- 4、php採集大數據的方案
- 5、搜一次php1.6為什麼採集電影的時候顯示不支持當前採集環境,我用的vps,N點也安裝了,用的mqsql數據庫
- 6、做個PHP的小型電影網站,如何設計數據庫?
php 百度 知道數據採集
問題其實不難,自己都能寫。給你幾個思路吧:
1.在百度知道中,輸入linux,然後會出現列表。複製瀏覽器地址欄內容。
然後翻頁,在複製地址欄內容,看看有什麼不同,不同之處,就是你要循環分頁的i值。
當然這個是笨方法。
2.使用php的file或者file_get_contents函數,獲取鏈接URL的內容。
3.通過php正則表達式,獲取你需要的3個字段內容。
4.寫入數據庫。
需要注意的是,百度知道有可能做了防抓取的功能,你剛一抓幾個頁面,可能會被禁止。
建議也就抓10頁數據。
其實不難,你肯定寫的出來。 還有,網上應該有很多抓取工具,你找找看,然後將抓下來的數據
在做分析。寫入數據庫。
php怎麼抓取其它網站數據
可以用以下4個方法來抓取網站 的數據:
1. 用 file_get_contents 以 get 方式獲取內容:
?
$url = ”;
$html = file_get_contents($url);
echo $html;
2. 用fopen打開url,以get方式獲取內容
?
$url = ”;
$fp = fopen($url, ‘r’);
stream_get_meta_data($fp);
$result = ”;
while(!feof($fp))
{
$result .= fgets($fp, 1024);
}
echo “url body: $result”;
fclose($fp);
3. 用file_get_contents函數,以post方式獲取url
?
$data = array(
‘foo’=’bar’,
‘baz’=’boom’,
‘site’=”,
‘name’=’nowa magic’);
$data = http_build_query($data);
//$postdata = http_build_query($data);
$options = array(
‘http’ = array(
‘method’ = ‘POST’,
‘header’ = ‘Content-type:application/x-www-form-urlencoded’,
‘content’ = $data
//’timeout’ = 60 * 60 // 超時時間(單位:s)
)
);
$url = “”;
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
4、使用curl庫,使用curl庫之前,可能需要查看一下php.ini是否已經打開了curl擴展
$url = ”;
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
php 定義一個二維數組,存儲多部電影的信息.並使用foreach將電影信息顯示到表格中
?php
$movie = array(array(‘泰坦尼克號’,’2015-07-20′),array(‘終結者’,’2015-08-28′));
?
table border=’1′
tr
td名稱/td
td上映時間/td
/tr
?php foreach ($movie as $key = $value): ?
tr
td?php echo $value[‘0’] ?/td
td?php echo $value[‘1’] ?/td
/tr
?php endforeach ?
/table
php採集大數據的方案
1、建議你讀寫數據和下載圖片分開,各用不同的進程完成。
比如說,取數據用get-data.php,下載圖片用get-image.php。
2、多進程的話,php可以簡單的用pcntl_fork()。這樣可以並發多個子進程。
但是我不建議你用fork,我建議你安裝一個gearman worker。這樣你要並發幾個,就啟幾個worker,寫代碼簡單,根本不用在代碼里考慮thread啊,process等等。
3、綜上,解決方案這樣:
(1)安裝gearman worker。
(2)寫一個get-data.php,在crontab里設置它每5分鐘執行一次,只負責讀數據,然後把讀回來的數據一條一條的扔到 gearman worker的隊列里;
然後再寫一個處理數據的腳本作為worker,例如叫process-data.php,這個腳本常駐內存。它作為worker從geraman 隊列里讀出一條一條的數據,然後跟你的數據庫老數據比較,進行你的業務邏輯。如果你要10個並發,那就啟動10個process-data.php好了。處理完後,如果圖片地址有變動需要下載圖片,就把圖片地址扔到 gearman worker的另一個隊列里。
(3)再寫一個download-data.php,作為下載圖片的worker,同樣,你啟動10個20個並發隨便你。這個進程也常駐內存運行,從gearman worker的圖片數據隊列里取數據出來,下載圖片
4、常駐進程的話,就是在代碼里寫個while(true)死循環,讓它一直運行好了。如果怕內存泄露啥的,你可以每循環10萬次退出一下。然後在crontab里設置,每分鐘檢查一下進程有沒有啟動,比如說這樣啟動3個process-data worker進程:
* * * * * flock -xn /tmp/process-data.1.lock -c ‘/usr/bin/php /process-data.php /dev/null 21’
* * * * * flock -xn /tmp/process-data.2.lock -c ‘/usr/bin/php /process-data.php /dev/null 21’
* * * * * flock -xn /tmp/process-data.3.lock -c ‘/usr/bin/php /process-data.php /dev/null 21’
不知道你明白了沒有
搜一次php1.6為什麼採集電影的時候顯示不支持當前採集環境,我用的vps,N點也安裝了,用的mqsql數據庫
你要貼出具體錯誤提示,例如它提示那個地方不支持。
php環境配置項很多,可能有一些沒有打開。然後修改對應的php.ini
N點只是虛擬主機管理系統而已,和環境無關的。
做個PHP的小型電影網站,如何設計數據庫?
可以參看discuz數據庫表帖子,和帖子附件的設計,我的大概思路是這樣的:
首先建立一個數據表”film”用來保存簡短文字信息,其中包含:電影發布時有名字,主演,簡介,歸屬欄目,發布電影的URL鏈接。在創建一個表(考慮到是小型網站,如果中型的話,可以選擇10個,像discuz一樣)”attachement”,用來保存,上傳截圖,上傳視頻。這個表用一個外鍵與film表連接。中間在外鍵上加索引。
希望我的回答對你有幫助!
原創文章,作者:AGHC,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/142494.html