문제

Greasemonkey를 사용하여 사이트를 크롤링하고 GM_setValue를 사용하는 것보다 값을 임시로 저장하는 더 좋은 방법이 있는지 궁금합니다.

내가 원하는 것은 소셜 네트워크에서 내 연락처를 크롤링하고 프로필 페이지에서 Twitter URL을 추출하는 것입니다.

나의 현재 계획은 각 프로필을 자체 탭에서 열어서 일반 탐색자처럼 보이도록 하는 것입니다(즉, CSS, scrits 및 이미지가 브라우저에 의해 로드됩니다).그런 다음 GM_setValue를 사용하여 Twitter URL을 저장합니다.모든 프로필 페이지가 크롤링되면 저장된 값을 사용하여 페이지를 만듭니다.

하지만 저장 옵션이 그다지 만족스럽지 않습니다.어쩌면 더 좋은 방법이 있을까요?

동일한 스크립트 인스턴스로 사용자 프로필을 모두 처리할 수 있도록 현재 페이지에 사용자 프로필을 삽입하는 것을 고려했지만 XMLHttpRequest가 일반 사용자가 시작한 요청과 구별할 수 없게 보이는지 확실하지 않습니다.

도움이 되었습니까?

해결책

나는 웹사이트에서 많은 송장 라인 데이터를 가져와 회계 데이터베이스로 내보내야 하는 비슷한 프로젝트를 진행했습니다.

POST 데이터를 처리하고 데이터베이스에 저장하는 .aspx(또는 PHP 등) 백엔드를 만들 수 있습니다.

단일 페이지에서 원하는 모든 데이터는 데이터를 식별하기 위해 필드 이름이나 ID를 사용하여 양식(원하는 경우 스타일 속성을 사용하여 숨김)에 저장할 수 있습니다.그런 다음 양식 작업을 .aspx 페이지로 만들고 javascript를 사용하여 양식을 제출하기만 하면 됩니다.

(또는 페이지에 제출 버튼을 추가하여 데이터베이스에 제출하기 전에 양식 값을 확인할 수 있습니다.)

다른 팁

내 생각에는 먼저 특정 문제에 왜 Greasemonkey를 사용하고 싶은지 스스로에게 물어봐야 한다고 생각합니다.Greasemonkey는 웹 스파이더가 아닌 브라우징 경험을 수정하는 방법으로 개발되었습니다.GM_setValue를 사용하여 Greasemonkey가 이 작업을 수행하도록 할 수는 있지만 솔루션이 복잡하고 개발하기 어렵다는 것을 알게 될 것입니다.그리고 이를 위해서는 많은 수동 단계가 필요합니다(모든 탭 열기, 스크립트 실행 사이에 Greasemonkey 변수 지우기 등).

수행 중인 작업에 페이지의 JavaScript가 실행되어야 합니까?그렇다면 Perl 사용을 고려해 볼 수 있으며 WWW::기계화::플러그인::JavaScript.그렇지 않으면 간단한 Python 스크립트에서 이 모든 작업을 수행하는 것이 좋습니다.당신은 다음을 살펴보고 싶을 것입니다 urllib2 기준 치수.예를 들어, 다음 코드를 살펴보십시오(쿠키를 지원하기 위해 cookielib를 사용한다는 점에 유의하세요. 스크립트에서 사이트에 로그인해야 하는 경우 필요할 가능성이 가장 높습니다).

import urllib2
import cookielib
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
response = opener.open("http://twitter.com/someguy")
responseText = response.read()

그런 다음 정규식을 사용하여 원하는 모든 처리를 수행할 수 있습니다.

Google Gears를 고려해 보셨나요?그러면 많은 양의 정보를 저장할 수 있는 로컬 SQLite 데이터베이스에 액세스할 수 있습니다.

Greasemonkey를 원한 이유는 크롤링되는 페이지가 실제로 로봇을 승인하지 않기 때문입니다.Greasemonkey가 가장 쉬울 것 같았습니다. 크롤러를 보이게 하는 방법 합법적인.

실제로 브라우저를 통해 크롤러를 오염시키는 것이 더 합법적인 것은 아닙니다.귀하는 여전히 사이트 이용 약관을 위반하고 있습니다!예를 들어 WWW::Mechanize는 사용자 에이전트 문자열을 '스푸핑'하는 데에도 적합하지만 사이트에서 스파이더/크롤러를 허용하지 않으면 크롤링은 불법입니다!

Greasemonkey를 원하는 이유는 크롤링할 페이지가 실제로 로봇을 승인하지 않기 때문입니다.Greasemonkey는 크롤러를 합법적인 것처럼 보이게 만드는 가장 쉬운 방법처럼 보였습니다.

나는 이것이 크롤러를 합법적인 것처럼 보이게 만드는 가장 어려운 방법이라고 생각합니다.웹 브라우저를 스푸핑하는 것은 HTTP 헤더에 대한 기본적인 이해만 있으면 매우 쉽습니다.

또한 일부 사이트에는 거미처럼 행동하는 클라이언트를 찾는 경험적 방법이 있으므로 단순히 요청을 브라우저처럼 보이게 한다고 해서 사용자가 무엇을 하고 있는지 알 수 없다는 의미는 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top