웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
신문기사 긁어오기
2003.10.20 23:33
출처는 불명확합니다.
php 고수분들이 조금 수정을 하시면
좋은 자료가 될 듯 하여 올렸습니다.
<?
function get($url){//문서가져옮
$fp = fopen($url, "r");
while(!feof($fp)){
$tmp = fgets($fp, 900);
$temp .= $tmp;
}
fclose($fp);
return $temp;
}//function get
function Strip($all){// 링크랑 제목만 빼오기
$link_pm=strpos($all,">");
$link=substr($all,0,$link_pm);
if(!$link) return;
if(ereg(""",$link)){
$link_p=strpos($link,""");
$link=substr($link,$link_p+1);
$link_p=strpos($link,""");
$link=substr($link,0,$link_p);
}
if(ereg("'",$link)){
$link_p=strpos($link,"'");
$link=substr($link,$link_p+1);
$link_p=strpos($link,"'");
$link=substr($link,0,$link_p);
}
$link=trim($link);
$substr=substr($all,$link_pm+1);
$substr_p=strpos($substr,"</a>");
$substr=substr($substr,0,$substr_p);
$strip=strip_tags($substr);
$strip=trim($strip);
return array(link => $link, sub => $strip);
}//function strip($all)
function makeUrl($Url, $Link){
if(!strpos($Link,"http://") && substr_count("$Link","http://")) return $Link;
$eURL = pathinfo("$Url");
$host = parse_url($Url);
$host = $host[scheme]."://".$host[host];
$Link = "/".$Link; //링크가 루트인지 확인위해 임의로 붙인다.
if(substr_count("$Link","../")){ //한칸앞으로
$Link = str_replace("./../", "", $Link);
$Link = str_replace("../", "", $Link);
$pos = strrpos($eURL["dirname"], "/");
$makeUrl = substr($eURL["dirname"],0,$pos);
$makeUrl = "$makeUrl"."$Link";
}else if(substr_count("$Link","//") && !strpos($Link, "//")){ //루트로 가라
$makeUrl = $host."/".str_replace("//", "", $Link);
}else{ //제자리
$Link = str_replace("./", "", $Link);
$makeUrl = $eURL["dirname"]."$Link";
}
return $makeUrl;
}
////////////////////////////////////// 펑션끝
$date_Y = date("Y");
$date_M = date("m");
$date_D = date("d");
$mdate = "$date_Y.$date_M.$date_D"; //확장성 위해
////////////////////////////////////////////////////////////<== 신문사별설정 추가가능
$newspaper[] = "동아일보";
$URL[] = "http://www.donga.com/fbin/output?f=total";
$like[] = "$date_Y$date_M$date_D";
$newspaper[] = "연합신문";
$URL[] = "http://www.yonhapnews.co.kr/services/0400000000.html";
$like[] = "$date_Y$date_M$date_D";
////////////////////////////////////////////////////////////<== 여기까지 신문사별설정
for($x=0; $x < sizeof($newspaper); $x++){
$temp = get($URL[$x]);
$all = split("href =|HREF =|href=|HREF=",$temp);//--> url 추출
for($i=0; $i < sizeof($all); $i++){
$kisa = Strip($all[$i]);
if(ereg($like[$x], $kisa[link]) & 20 < strlen($kisa[sub])){
$LinkURL = makeUrl($URL[$x], $kisa[link]);
echo "<a href='$LinkURL'>[$newspaper[$x]]$kisa[sub]</a><br>";
}//if(ereg($like[$x], $kisa[link]) & 20 < strlen($kisa[sub]))
}//for($i=0; $i < sizeof($all); $i++)
}//for($x=0; $x < sizeof($newspaper); $x++)
?>
* DeX™님에 의해서 게시물 이동되었습니다 (2003-10-23 22:32)
php 고수분들이 조금 수정을 하시면
좋은 자료가 될 듯 하여 올렸습니다.
<?
function get($url){//문서가져옮
$fp = fopen($url, "r");
while(!feof($fp)){
$tmp = fgets($fp, 900);
$temp .= $tmp;
}
fclose($fp);
return $temp;
}//function get
function Strip($all){// 링크랑 제목만 빼오기
$link_pm=strpos($all,">");
$link=substr($all,0,$link_pm);
if(!$link) return;
if(ereg(""",$link)){
$link_p=strpos($link,""");
$link=substr($link,$link_p+1);
$link_p=strpos($link,""");
$link=substr($link,0,$link_p);
}
if(ereg("'",$link)){
$link_p=strpos($link,"'");
$link=substr($link,$link_p+1);
$link_p=strpos($link,"'");
$link=substr($link,0,$link_p);
}
$link=trim($link);
$substr=substr($all,$link_pm+1);
$substr_p=strpos($substr,"</a>");
$substr=substr($substr,0,$substr_p);
$strip=strip_tags($substr);
$strip=trim($strip);
return array(link => $link, sub => $strip);
}//function strip($all)
function makeUrl($Url, $Link){
if(!strpos($Link,"http://") && substr_count("$Link","http://")) return $Link;
$eURL = pathinfo("$Url");
$host = parse_url($Url);
$host = $host[scheme]."://".$host[host];
$Link = "/".$Link; //링크가 루트인지 확인위해 임의로 붙인다.
if(substr_count("$Link","../")){ //한칸앞으로
$Link = str_replace("./../", "", $Link);
$Link = str_replace("../", "", $Link);
$pos = strrpos($eURL["dirname"], "/");
$makeUrl = substr($eURL["dirname"],0,$pos);
$makeUrl = "$makeUrl"."$Link";
}else if(substr_count("$Link","//") && !strpos($Link, "//")){ //루트로 가라
$makeUrl = $host."/".str_replace("//", "", $Link);
}else{ //제자리
$Link = str_replace("./", "", $Link);
$makeUrl = $eURL["dirname"]."$Link";
}
return $makeUrl;
}
////////////////////////////////////// 펑션끝
$date_Y = date("Y");
$date_M = date("m");
$date_D = date("d");
$mdate = "$date_Y.$date_M.$date_D"; //확장성 위해
////////////////////////////////////////////////////////////<== 신문사별설정 추가가능
$newspaper[] = "동아일보";
$URL[] = "http://www.donga.com/fbin/output?f=total";
$like[] = "$date_Y$date_M$date_D";
$newspaper[] = "연합신문";
$URL[] = "http://www.yonhapnews.co.kr/services/0400000000.html";
$like[] = "$date_Y$date_M$date_D";
////////////////////////////////////////////////////////////<== 여기까지 신문사별설정
for($x=0; $x < sizeof($newspaper); $x++){
$temp = get($URL[$x]);
$all = split("href =|HREF =|href=|HREF=",$temp);//--> url 추출
for($i=0; $i < sizeof($all); $i++){
$kisa = Strip($all[$i]);
if(ereg($like[$x], $kisa[link]) & 20 < strlen($kisa[sub])){
$LinkURL = makeUrl($URL[$x], $kisa[link]);
echo "<a href='$LinkURL'>[$newspaper[$x]]$kisa[sub]</a><br>";
}//if(ereg($like[$x], $kisa[link]) & 20 < strlen($kisa[sub]))
}//for($i=0; $i < sizeof($all); $i++)
}//for($x=0; $x < sizeof($newspaper); $x++)
?>
* DeX™님에 의해서 게시물 이동되었습니다 (2003-10-23 22:32)
댓글 28
-
엘다
2003.10.21 00:00
어떻게 붙여야 하는지 정확히 가르쳐주시면..; -
카카시원츄
2003.10.21 00:13
<? include = "해당파일경로"; ?>
이런식으로 넣는거아닌가? -
엘다
2003.10.21 00:22
공백이라는 =ㅂ= -
Youstory
2003.10.21 00:52
http://php.chol.com/~j9223/t.php결과물... 훔.. 클릭하면 필요없는부분도 조금뜨나.. 유용해보이네요.. -
갈까마귀
2003.10.21 12:55
좋은 정보 감사합니다.
그런데 다른 뉴스를 가져 올려면 주소값을 어떻게 알아내야 하나요?
여러가지 해 보았는데 일반적인 페이지 링크 주소로는 않되는 것 같습니다. -
caret
2003.10.21 19:41
다른뉴스는
$newspaper[] = "동아일보";
$URL[] = "http://www.donga.com/fbin/output?f=total";
$like[] = "$date_Y$date_M$date_D";
URL 란에 있는 주소를 다른 뉴스를 가져올 주소를 넣어주시면 나오던데요. -
갈까마귀
2003.10.21 21:40
예.. 그런데.. 예를 들어 매경의 리스트를 가져오려고
http://news.mk.co.kr/newsListHeadLine.html
주소값을 적용해 보니 않나오더라구요...
필요한 주소값을 알아내는 팁이라도 있나 해서요.... -
horizon
2003.10.22 00:22
기타 신문기사의 주소는 스스로 찾으면 되더군요..
아래는 예를 들었습니다.
////////////////////////////////////////////////////////////<== 신문사별설정 추가가능
$newspaper[] = "<font color=cc0000>굿</font>";
$URL[] = "http://www.hot.co.kr/sports/list.html";
$like[] = "$date_Y$date_M$date_D";
////////////////////////////////////////////////////////////<== 여기까지 신문사별설정 -
클림트
2003.10.22 10:17
적용방법을 좀 자세히 설명해 주시면 감사하겠습니다.^^; -
litconan
2003.10.25 22:20
한번 긁어온 기사를 저장할 수는 없을까요? 매일 기사가 바뀌어 버리니 기존 기사를 버리기가 아깝네요. -
impre
2003.10.28 05:44
DBM으로 하시던지 그냥 DM에 저장하세요.. -
impre
2003.10.28 05:48
굳이 fopen으로 여는것보다..
$temp = file("http://www.hot.co.kr/sports/list.html");
이게 더 간편할겁니다~
$temp = file("http://www.hot.co.kr/sports/list.html");
for($i=0;$i<count($temp);$i++) {
if(ereg("어쩌구",$temp[$i])){
$data[] = ereg_replace("저쩌구",$temp[$i]);
}
}
이런식으로 하셔도 좋을것 같습니다. -
TheMics
2003.10.28 18:24
file은 속도가 워낙에 느려서;;쿨럭;
어차피 file을 쓰실 거면 for문은 과감히-_-버리고 join함수를 사용하는게 낫겠죠.
$data = join("",file("http://")); -
impre
2003.10.29 04:24
fopen보다 file이 더 느린가요?? 몰랐네요..^^;;
신문기사 긁어오려면..일정한 태그가 있는곳에서 뽑아오는것일테니..
변환하기는 for가 그래도 더 편하지 않을까요?? ^^ -
송동혁
2003.10.30 21:36
아는 분들의 논쟁이라... ㅡ,.ㅡ;; 전혀 못알아 듯는 난 바보?
ㅋㅋ 언능 공부 해서... 나두 한자 적어야쥥~~ -
병아리
2003.11.04 12:27
http://kor21.cc/bbs/news.php여기는 도대체 어떻게 하는건가요? 정말 궁금합니다. 한두개도 아니고 정말 많은 사이트들을 긁어 오던데요 -
권병준
2003.11.09 02:56
조금더 잘하시는분이 내용까지 긁어올수있게 다시 강의해주시면 안될까요?
홈피에 꾸미고 싶은데 아직은 초보라 어려워여...
부탁드릴께염 ^^;; -
㎯하루€oz
2003.11.12 15:30
흠... 지금 제목,내용,날짜,시간까지 긁어오는것 완료 했고요..
이제 남은건 긁어오고 싶은 글의 번호를 지정하는 것만 남았네요..
원하는 번호만 긁어오거나 아니면 오늘 날짜만 긁어오거나...
하는 등.. 각 게시판마다 출력되는 형식이 다르기 때문에... 쩝....;;;;;; -
㎯하루€oz
2003.11.12 15:35
위의 소스에서 $temp = get($URL[$x]); 가 소스를 가져오는 부분입니다..
그럼 소스중 원하는 부분을 explore로 구분 지어서 앞 또는 뒤를 가져와서
또 원하는 부분을 explore로 나누고.. 해서 원하는 부분만 딱 찝었으면 변수에 넣으세요..
좀 노가다적인 측면이 있는지라........ -
㎯하루€oz
2003.11.12 15:37
병아리// 위의 소스를 잘 보시면 아실텐데요.. ㅡㅡ;;;
$newspaper[] = "동아일보";
$URL[] = "http://www.donga.com/fbin/output?f=total";
$like[] = "$date_Y$date_M$date_D";
$newspaper[] = "연합신문";
$URL[] = "http://www.yonhapnews.co.kr/services/0400000000.html";
$like[] = "$date_Y$date_M$date_D";
이부분... -
㎯하루€oz
2003.11.12 18:26
대략 작업해 놓은 상황입니다...
http://nface.pe.kr/bak/news.php<- 요 링크 클릭하면 주소 뒤에 이상한거 <% BR> 인가? 붙으니깐
제거하시면 보입니다... 참고로.. 무지하게. . 허접함당... ㅠ.ㅠ;; -
이은주
2003.12.08 12:50
신문사별설정 다음 for문을 따로 빼고나서 marquee 응용 해보세요.
<marquee width="350" height="40" direction="up" scrollamount="12" scrolldelay="3000">
이렇게하면 3초에 대략 1개의 기사가 올라오네요.
php하구 html은 젬병이라 ... 간단한 응용밖에 못하네요. -
이은주
2003.12.08 13:33
적용 예)
$newspaper[] = "연합신문";
$URL[] = "http://www.yonhapnews.co.kr/services/0400000000.html";
$like[] = "$date_Y$date_M$date_D";
////////////////////////////////////////////////////////////<== 여기까지 신문사별설정
?>
<marquee width="350" height="40" direction="up" scrollamount="12" scrolldelay="3000">
<?
for($x=0; $x < sizeof($newspaper); $x++){
$temp = get($URL[$x]);
... 중간 생략 ...
}//for($i=0; $i < sizeof($all); $i++)
}//for($x=0; $x < sizeof($newspaper); $x++)
?>
</marquee>
** 참고
한줄씩 정확하게 맞추실려면 height값과 scrollamount값을 잘 조절하시면 됩니다.
예를 들어 글씨 크기가 15포인트일 경우 4칸 정도의 영역에 한줄씩 스크롤 할려면 15 * 4 = 60
height="60" 이렇게 하시구요 scrollamount="15" 글씨 크기만큼 하세요.
<marquee width="350" height="60" direction="up" scrollamount="15" scrolldelay="3000">
이미 다 아시는거 중복일지도.. ^^; -
리틀이
2004.01.05 19:34
-
리틀이
2004.01.05 19:36
http://kr.search.news.yahoo.com/property/news?z=date&key=보아&opt=10&p=보아
키워드 별 검색도 가능하군요.
그런데 이미지가 아래 있는것은 그 위에것까지만 되고 아래것 짤리네요T.T -
신성복
2004.03.11 04:46
이 소스를 게시판에 부착 시키려 하는데 잘 안되네요..
게시판에 붙이고 최근 게시물로 불러들이려하는데...좋은 방법이 없을까요? -
윤현호
2004.04.26 20:25
쿨럭, URL 부분의 대소문자 구분이 약간 문제가 있네요. FATAL error가 나서 보니까 $URL이 소문자 $url로 되어야 할 듯.. 아무튼 좋은 소스 감사합니다.. 덕분에 고민하던 뉴스티커 같은거 신경안쓰고 사용할 수 있게되었네요..꾸벅..^^ -
정말재수없어
2005.08.30 20:11
fopen이 이제 유료계정을 상대로 몬쓴다고 했던것 같은데...