rss를 불러오지 못하는 원인? 해결방법?

rss를 불러오지 못하는 원인? 해결방법?

QA

rss를 불러오지 못하는 원인? 해결방법?

본문


<?php
            $rssdata = simplexml_load_file("https://bigroof.jp/feed/");
            $num_of_data = 3;
            $outdata = "";
            for ($i=0; $i<$num_of_data; $i++){
                $entry = $rssdata->channel->item[$i];
                $date = date("Y.m.d", strtotime($entry->pubDate));
                $title = $entry->title;
                $link = $entry->link;
                $outdata .= '<li>' . '<time>' . $date. '</time>';
                $outdata .= '<a target="_blank" href="' . $link . '"><p>' . $title . '</p></a></li>';
            }
                echo '<ul>' . $outdata . '</ul>';
?>

 

위와같은 코드를 이용해서 rss를 불러오고 있는데요,

어떤 페이지가 불러오기를 자꾸 실패하는데 뭐가 문제일까요ㅠ ㅠ ..

요기의 rss인데요.... 이 사이트 자체의 문제인지...

 

혹시 위의 php형식 외에 다른 방식으로 최신기사를 3건 불러오려면

다른 어떤 방법이 있을까요?

 

읽어주셔서 감사합니다.

 

 

이 질문에 댓글 쓰기 :

답변 3

찍어보니깐, dc:date를 못가져오네요.

 

간단하게 처리하면 아래 방식으로 하시면 됩니다.

 


$rssdata = get_contents("http://naganumacc.jp/blog/index.php/rss");
$rssdata = str_replace('dc:date', 'pubDate', $rssdata);
$rssdata = simplexml_load_string($rssdata);
$num_of_data = 3;
$outdata = "";
for ($i=0; $i<$num_of_data; $i++){
	$entry = $rssdata->item[$i];
	$date = date("Y.m.d", strtotime($entry->pubDate));
	$title = $entry->title;
	$link = $entry->link;
	$outdata .= '<li>' . '<time>' . $date. '</time>';
	$outdata .= '<a target="_blank" href="' . $link . '"><p>' . $title . '</p></a></li>';
}
echo '<ul>' . $outdata . '</ul>';
 
function get_contents($url) {
	$agent = 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)';
	$curlsession = curl_init();
	curl_setopt ($curlsession, CURLOPT_URL, $url);
	curl_setopt ($curlsession, CURLOPT_HTTPPROXYTUNNEL, 0);
	curl_setopt ($curlsession, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt ($curlsession, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($curlsession, CURLOPT_HEADER, 0);
	curl_setopt ($curlsession, CURLOPT_POST, 0);
	curl_setopt ($curlsession, CURLOPT_USERAGENT, $agent);
	curl_setopt ($curlsession, CURLOPT_REFERER, "");
	curl_setopt ($curlsession, CURLOPT_TIMEOUT, 3);
	$buffer = curl_exec ($curlsession);
	$cinfo = curl_getinfo($curlsession);
	curl_close($curlsession);
	if ($cinfo['http_code'] != 200)	{
	return "";
	}
	return $buffer;
}

 

curl로 페이지를 긁은 다음 dc:date를 pubDate로 치환하고 작업. 머 요런 꼼수랄까요.

정말 감사합니다 ㅠ
모르는 게 너무 많아 부끄럽네요... 알려주신대로 해결 되었습니다.
알려주신 부분은 php를 공부하면 알 수 있는건가요? ㅠ ㅠ
도통 모르는 것 투성이라 공부할 게 산더미 같네요
정말 감사해요 (__)꾸벅!!!

요런건은 약간의 문제해결절차를 기억하시면 됩니다.

1. 원주소로 접근해서 소스가 어떻게 나오는지 확인한다.
    => channel안에 item이 없고, 바로 있네?
    => 루프문에서 접근방식 수정
    => pubDate가 없구나. dc:date에 날짜가 있네

2. 내 소스에서 루프문 돌리기전에 어떻게 불러왔는지 확인한다.
    => dc:date가 없어졌네?
    => 다양한 문제해결 방법을 찾는다
        ㄱ. simplexml_load_string 외에 다른 함수로 가능할까?
            => http://php.net/simplexml_load_file 하단에 댓글이나 나와있는 함수 참조
        ㄴ. 중간에 : 들어가서 안나오는것 같은니 태그명만 바꿔 보자
            => str_replace 이용하기
            => simplexml_load_file 함수로는 수정이 불가하니 다른걸 찾아보자.
                : 아까전에 simplexml_load_file 함수 보니 simplexml_load_string 요건것도 있더라.
                : 그러면 데이터를 받아서 simplexml_load_string 함수로 처리하기전에 바꾸자.
            => 데이터를 어떻게 받지?
                : 검색 등...

요런식으로...
실제 제가 진행한거랑 비슷한 방식입니다.
차이점은 simplexml_load_file 같은 경우 서버에서 막아두는 경우가 많아
저는 보통 데이터를 받아서 처리하는 방식으로 사용해서 문제해결까지 시간이 약간 단축되는거지요.

친절한 답변 감사드려요!!
문제 해결절차까지 너무 감사드립니다.
이런 문제를 해결하기 위해서는 어떤 언어가 기본적으로 베이스에 깔려 있어야 할까요?
제가 실은 html/css + js(있는거 긁어다 쓰기) 정도밖에 수준이 안되어서요~
어떤 새로운 언어를 더 공부해봐야 겠다는 생각이 절실히 드네요..
웹디자이너로서 어떤 언어를 더 공부하면 좋을까요ㅠ?

제 생각은 이렇습니다.

1. 기본적으로 웹디가 할 일이 아니다.
    => 프로그래머가 해줘야 할 일

2. 그누보드 기반이라면 당연 PHP에 대해서는 아는게 좋습니다.
    => 즉, 통상적으로 사용하는 언어에 대해서는 이해도가 높을 수록 좋습니다.
        (티 많이 내면 일이 많아지니, 나의 불편함을 해소할 정도면 좋지 않을까 합니다.)
        ※ 웹디입장에서 JSP로 되어 있는 홈페이지를 많이 건들면 굳이 PHP를 공부 할 필요는 없지요.

결론적으로 웹디시라면 CSS, JS를 공부하고 자세하게 알고 있는게 더 많은 도움이 되지 않을까 합니다.
(퍼블리싱이 가능해지고 속도가 올라가니)
그누보드나 워드프레스 쪽으로 프리랜서 일도 하고 싶다면 PHP도 공부를 해두셔야 하고요.

JS만 조금 익숙해져도 PHP도 소스 보는 눈이 많이 생깁니다.
다른건 구글신에게 검색하면 되니깐요. 뿅~

감동입니다 ㅠ ㅠ 눙무리...
기본적으로 웹디가 할 일이 아니라고 저도 사실 그렇게 생각하고는 있지만,
회사가 워낙에 소규모인데다, 검색을 하든 이렇게 질문을 하든 스스로 해결해내지 않으면 안되는
그런 현장입니다 ㅠ ㅠ... (개발자가 없고, 웹디만 둘입니다. 선배랑 저랑 둘이 디자인부터 코딩까지 다 하는 형태...
라 능률이 썩 좋진 않네요 아무래도 모르는 부분 검색하는 시간이 많이 들어가니까요ㅠ ㅠ )
여기가 일본인지라 그누보드는 사용하지 않고 대부분 갱신없는 웹사이트나,
토픽같이 정기적으로 뉴스거리가 있는 경우에는 워드프레스를 이용합니다.
그림자밟기님 말씀대로라면 저는 제 선에서 일단 html/css (는 어느정도 자신이 있습니당 홍홍홍) 에
javascript를 공부하면 좋겠군요!!! (지금은 퍼다 쓰는 수준이니...)
거기다 워드프레스를 주로 이용하니 php까지 겸하면 금상첨화겠군요!!
정말 감사합니다 ㅠ

rss 1.0 규격이랑 2.0 규격이 있는데 해당 소스는 2.0 에 맞춰서 작성되어있습니다.

 

1.0 규격

http://web.resource.org/rss/1.0/spec 

 

2.0 규격

http://www.rssboard.org/rss-specification 

 

 

$entry = $rssdata->item[$i]; 

답변을 작성하시기 전에 로그인 해주세요.
전체 97
QA 내용 검색
filter #rss ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT