문제

방금 많은 Google Buzz 데이터를 긁어 냈으며 어떤 버즈 게시물이 동일한 뉴스 기사를 참조하는지 알고 싶습니다. 문제는이 게시물의 많은 링크가 URL 쇼트너에 의해 수정되었으므로 많은 고유 한 단축 URL이 실제로 동일한 뉴스 기사를 가리킬 수 있다는 것입니다.

수백만 개의 게시물이 있다는 점을 감안할 때 가장 효율적인 방법은 무엇입니까 (바람직하게는 파이썬에서)

  1. URL이 단축 URL인지 여부를 감지합니다 (많은 URL 단축 서비스 중 하나 또는 최소한 가장 큰)
  2. 단축 된 URL의 "대상", 즉 단축 URL의 길고 원본 버전을 찾으십시오.

URL 단축기가 엄격한 요청 속도 제한을 부과하는지 아는 사람이 있습니까? 이것을 100/second (모두 동일한 IP 주소를 형성 함)로 유지하면 문제가 발생한다고 생각하십니까?

업데이트 및 예비 솔루션응답은 다음과 같은 간단한 솔루션으로 이어졌습니다.

import urllib2
response = urllib2.urlopen("http://bit.ly/AoifeMcL_ID3") # Some shortened url
url_destination = response.url

그게 다야!

도움이 되었습니까?

해결책

단축 된 URL의 대상을 얻는 가장 쉬운 방법은 다음과 같습니다. urllib. 짧은 URL이 유효하다는 점에서 (응답 코드 200) URL을 반환합니다.

>>> import urllib
>>> resp = urllib.urlopen('http://bit.ly/bcFOko')
>>> resp.getcode()
200
>>> resp.url
'http://mrdoob.com/lab/javascript/harmony/'

그리고 그게 그게!

다른 팁

(AFAIK) 대부분의 URL 쇼트너는 이미 단축 된 URL을 추적하므로 동일한 URL을 사용하여 동일한 엔진에 대한 여러 요청이 동일한 단락을 반환합니다.

제안 된 바와 같이, 실제 URL을 추출하는 가장 좋은 방법은 응답에서 단축 된 URL에 대한 요청에 대한 헤더를 읽는 것입니다. 그러나 일부 단축 서비스 (예 : Bit.ly)가 제공합니다. API 방법 긴 URL을 반환합니다

  1. 가장 많이 사용되는 URL-Shorteners 목록을 작성하고 새 제품을 발견하는 동안 확장 한 다음 목록의 한 항목에 대한 링크를 확인하십시오.

  2. 당신은 당신이 그것을 따르지 않는 한 URL이 어디로 가리키는지 알지 못하므로이를 수행하는 가장 좋은 방법은 단축 된 URL을 따르고 응답의 HTTP 헤더를 추출하여 어디로 향하는지 확인하는 것입니다.

초당 100 개의 요청으로 반드시 문제가 발생할 수 있다고 생각합니다 (최악의 상황은 IP를 스패머로 블랙리스트하는 것입니다).

게시 된 솔루션은 Python 2.x에서만 작동합니다. Python 3.x를 위해서는이 작업을 수행 할 수 있습니다.

import urllib.request as urlreq
link = urlreq.urlopen("http://www.google.com")
fullURL = link.url

전체 URL을 얻으려면.

내가 읽은 것에서이 답변은 두 번째 질문을 다루었습니다. 첫 번째 질문에 관심이있었습니다. 약 300 개의 단축기 목록을 본 후에는 그것들을 감지하는 가장 좋은 방법은 단순히 목록에 올리거나 Regex에 넣고 그들과 일치하는 것을 찾는 것입니다.

"|".join(z1)
'0rz.tw|1link.in|1url.com|2.gp|2big.at    
r1 = re.compile("|".join(z1),flags=ic)

그런 다음 R1을 사용하여 URL 단축기를 찾으려고하는 것에 대해 Regex로 일치합니다 (메일 등 ...)

아주 좋은 목록이 여기에 있습니다. longurl.org/services

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