作者 主題: [求助]抓取的網頁,寫入本機資料庫卻是空白!!!  (閱讀 6992 次)

0 會員 與 1 訪客 正在閱讀本文。

arayc

  • 可愛的小學生
  • *
  • 文章數: 5
    • 檢視個人資料
以下是我執行頁面的程式
代碼: [選擇]
<?php
include_once("db.php");
include(
"LIB_http.php");
include(
"LIB_parse.php");

$ch curl_init();
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_URL"http://scm.sco.gov.tw/_pg/content/memo.asp?sday=".date("Y/m/d"));
//echo "http://scm.sco.gov.tw/_pg/content/memo.asp?sday=".date("Y/m/d");
curl_setopt($chCURLOPT_HEADERfalse);
curl_setopt($chCURLOPT_USERAGENT"Google Bot");
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
$output curl_exec($ch);
curl_close($ch);

//$output = str_replace("&#39;","\"",$output);
//$output = iconv("big5","UTF-8",$output);

$tag_array parse_array($output"一、""</");

$output $tag_array[0];
//echo $output;
     
$sql " insert into `price3` (`p3_content`,`p3_date`)values(&#39;".$output."&#39;,&#39;".date("Ymd")."&#39;)";
mysql_query($sql);
echo $sql;

?>


提供引入檔的程式連結 http://www.schrenk.com/nostarch/webbots/DSP_download.php

請前輩們指教,我為何寫入本機時,p3_content 這個欄位空白的,而不是抓取的文字??

資料表
CREATE TABLE `price3` (
  `p3_sn` int(11) NOT NULL auto_increment,
  `p3_content` text NOT NULL,
  `p3_date` varchar(20) NOT NULL,
  PRIMARY KEY  (`p3_sn`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

--
個人是使用appserv套件包
Apapche 2.2.8(win32)
php 5.2.6
MySQL 5.0.51a
phpmyadmin 2.10.3
« 上次編輯: 2009-10-27 15:46 由 arayc »

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
以下是我執行頁面的程式
代碼: [選擇]
<?php
include_once("db.php");
include_once(
"function.php");
include(
"LIB_http.php");
include(
"LIB_parse.php");

$ch curl_init();
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_URL"http://scm.sco.gov.tw/_pg/content/memo.asp?sday=".date("Y/m/d"));
//echo "http://scm.sco.gov.tw/_pg/content/memo.asp?sday=".date("Y/m/d");
curl_setopt($chCURLOPT_HEADERfalse);
curl_setopt($chCURLOPT_USERAGENT"Google Bot");
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
$output curl_exec($ch);
curl_close($ch);

//$output = str_replace("&#39;","\"",$output);
//$output = iconv("big5","UTF-8",$output);

$tag_array parse_array($output"一、""</");

$output $tag_array[0];
//echo $output;
     
$weather = new weather();

$weather->insert("price3","p3_content`,`p3_date",$output."&#39;,&#39;".date("Y-m-d"));
mysql_query($sql);
echo $sql;

?>


提供引入檔的程式連結 http://www.schrenk.com/nostarch/webbots/DSP_download.php

請前輩們指教,我為何寫入本機時,p3_content 這個欄位空白的,而不是抓取的文字??

資料表
CREATE TABLE `price3` (
  `p3_sn` int(11) NOT NULL auto_increment,
  `p3_content` text NOT NULL,
  `p3_date` varchar(20) NOT NULL,
  PRIMARY KEY  (`p3_sn`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

--
個人是使用appserv套件包
Apapche 2.2.8(win32)
php 5.2.6
MySQL 5.0.51a
phpmyadmin 2.10.3


1. 先檢查變數裡是否有資料, 類似問題之前好多人有問過, 怎麼都不先爬文..
2. 檢查 insert() 字串裡的引號有沒有用錯

arayc

  • 可愛的小學生
  • *
  • 文章數: 5
    • 檢視個人資料
1. 先檢查變數裡是否有資料, 類似問題之前好多人有問過, 怎麼都不先爬文..
2. 檢查 insert() 字串裡的引號有沒有用錯

變數裡有資料
引號也沒有用錯

echo出來的sql語法直接貼到phpmyadmin可以寫入,就是在頁面上執行,寫入是空白
我只是想知道除了以上兩個問題以外,還會有什麼問題,會讓資料寫不進去或是空白

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
db是否已經正確連線?
請先確定db已經正確連線了。
此外請善用mysql的除錯訊息,大家不是mysql。
沒辦法回答為什麼你的mysql拒絕把資料寫入。

1. 先檢查變數里是否有資料, 類似問題之前好多人有問過, 怎麼都不先爬文..
2. 檢查 insert() 字串裡的引號有沒有用錯

變數里有資料
引號也沒有用錯

echo出來的sql語法直接貼到phpmyadmin可以寫入,就是在頁面上執行,寫入是空白
我只是想知道除了以上兩個問題以外,還會有什麼問題,會讓資料寫不進去或是空白

我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

arayc

  • 可愛的小學生
  • *
  • 文章數: 5
    • 檢視個人資料
好!!謝謝你的答覆!!

liteC

  • 憂鬱的高中生
  • ***
  • 文章數: 158
    • 檢視個人資料
    • 軟體
自己寫抓網頁函式太累了吧

去抓 "史努比" 來用不是比較快? 三行指令抓整張網頁
搜尋一下 snoopy. (連wordpress也是用這支class )
非常謝謝學長們熱心回答我發問的問題
非常感寫 m(_ _)m

arayc

  • 可愛的小學生
  • *
  • 文章數: 5
    • 檢視個人資料
自己寫抓網頁函式太累了吧

去抓 "史努比" 來用不是比較快? 三行指令抓整張網頁
搜尋一下 snoopy. (連wordpress也是用這支class )


:)謝謝你告訴我這個工具!!

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
用file_get_content()不就好了
一行指令搞定,還不用include

自己寫抓網頁函式太累了吧

去抓 "史努比" 來用不是比較快? 三行指令抓整張網頁
搜尋一下 snoopy. (連wordpress也是用這支class )
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

liteC

  • 憂鬱的高中生
  • ***
  • 文章數: 158
    • 檢視個人資料
    • 軟體
用file_get_content()不就好了
一行指令搞定,還不用include

自己寫抓網頁函式太累了吧

去抓 "史努比" 來用不是比較快? 三行指令抓整張網頁
搜尋一下 snoopy. (連wordpress也是用這支class )


我推薦的該class可以用curl也可以模擬瀏覽器..沒抓不下來的東西
您說的那一行指令在很多情況下無法使用 (主機的限制, 或對方主機的限制)

總之, 有幫到樓主的忙就好, 呵呵.
非常謝謝學長們熱心回答我發問的問題
非常感寫 m(_ _)m

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
仔細看看file_get_contents()函數喔
他其實是可以透過stream_context_create設定一些http參數
去設定User-agent這些參數
參考一下官方文件吧

http://tw.php.net/manual/en/function.file-get-contents.php
http://tw.php.net/manual/en/function.stream-context-create.php

用file_get_content()不就好了
一行指令搞定,還不用include

自己寫抓網頁函式太累了吧

去抓 "史努比" 來用不是比較快? 三行指令抓整張網頁
搜尋一下 snoopy. (連wordpress也是用這支class )


我推薦的該class可以用curl也可以模擬瀏覽器..沒抓不下來的東西
您說的那一行指令在很多情況下無法使用 (主機的限制, 或對方主機的限制)

總之, 有幫到樓主的忙就好, 呵呵.
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

TyroneYeh

  • 俺是博士!
  • *****
  • 文章數: 2396
  • 性別: 男
    • 檢視個人資料
我是用 wget 把網頁 download 下來,在用 file_get_contents 把下載下來的檔案讀入
這樣可以判斷檔案原始修改日期!!

wget -N -P /tmp http://xxxx
--
TyroneYeh