2012-04-02 4 views
0

나는 내 대학에서 호스팅하는 소규모 웹 사이트를 운영하고 있습니다. 정책은 서버 측 스크립트 언어 (예 : PHP 등)를 사용할 수 없으므로 웹 사이트가 정적이거나 클라이언트 측 스크립팅 (예 : 자바 스크립트 등)을 사용할 수 있습니다. 나는 또한 서버를 만질 수 없다/구성/설치 것들.스크래핑을위한 서버 측 스크립팅 언어의 대안

어쨌든 저는 파이썬 + lxml로 동적으로 긁어 모으는 다른 웹 사이트 (즉, Google 학자 인용)의 데이터를 추가하고 싶습니다. 물론 클라이언트 측에서 이러한 데이터를 동적으로 쿼리 할 수있는 방법이 있습니까?

IronPython을 사용하여 내 웹 페이지에 파이썬 코드를 포함 시키려고했지만 가져온 라이브러리를 찾지 못해 불평했습니다. 그러나 비슷한 해결책이 좋을 것입니다. 또는 외부 웹 페이지를 열고 파싱 할 수있는 순수한 자바 스크립트 라이브러리 ...?

감사합니다.

답변

4

No. same origin policy은이를 방지합니다.

데이터를 JSON-P로 트랜스 코딩하거나 제 3 자 프록시를 사용하거나 다른 호스트를 사용하십시오.

또는 cron 작업을 사용자가 제어하는 ​​서버에서 실행하여 정기적으로 새 정적 HTML을 생성하고 호스트에 업로드하십시오.

+2

+1 정적 콘텐츠를 만드는 크론 작업. –

+0

이 정책을 우회 할 방법이 없습니까? 예를 들어, 다른 유연한 서버에서 PHP 스크립트를 사용하고 iframe을 사용하여 관련 데이터 만 표시 할 수 있습니까? 그러나 이것을 수행하고 20 개의 작은 iframe에서 20 개의 데이터를 검색하여 표시하려면 PHP 스크립트에 20 번 쿼리해야합니다. s 감사합니다 (모두!) 귀하의 회신에 대한 – WhitAngl

+0

사실 JSON-P 솔루션은 내가 원하는 것일 수도 있습니다 :) 감사합니다 – WhitAngl

0

트릭은 Same Origin Policy과 충돌하므로 페이지와 동일한 출처가 아닌 사이트 콘텐츠에 대한 클라이언트 측 코드 액세스가 거부됩니다. CORS과 같은 것들이 교차 원산지 항목을 허용하지만 사용자는이를 지원하는 브라우저를 사용해야하며 데이터를로드하려는 사이트는이를 지원해야하며 (특히 페이지 액세스를 허용하거나 서버 수준에서 모두 페이지 액세스)를 허용하십시오.

그래서 당신은 아마 서버 측 솔루션을   —를 필요로하기 위하여려고하고있다 그러나 그것은 반드시 당신의 서버가 제공하는 것을 의미하지 않는다. 지원 사이트에서 정보를 수집하는 경우 JSON-P, SOP 문제없이 사용할 수 있습니다. 그렇지 않은 경우 using YQL as a cross-domain proxy에 설명 된대로 YQL과 같은 서비스를 사용할 수 있습니다.

cron 일을 Quentin cleverly suggested으로 할 수 없다면, 나는 PHP 웹 호스팅이 풍부한 상품이므로 죽은 싸구려라고 지적 할 것입니다. 한달에 1 달러 미만의 저렴한 커피처럼. 나는 $ 2/mo 이하의 가격으로 그것을 보았습니다. (검색의 20 초 만에 가장 저렴한 가격은 2.49 달러 였지만 더 좋았습니다.) 따라서 사이트를 재배치 할 수 있습니다. 대학 주소가 중요하다면, 대학 사이트의 클라이언트 측 코드가 사용하는 커피 한 냄새가 나는 서버에서 JSON-P 인터페이스를 제공하십시오.

0

서버 제한 사항을 감안할 때 이러한 스크립트를 로컬로 실행하여 HTML을 생성하고 정적 출력을 서버에 푸시합니다.