[예시 URL을 열려면 Shazam에 로그인해야합니다.]Python : 메모리에 웹 파일을 다운로드하는 방법은 무엇입니까?
그래서 Shazam 내역을 다운로드하는 스크립트를 작성하여 다른 서비스에 재생 목록을 작성하도록 조작 할 수 있습니다. 어쨌든, http://www.shazam.com/myshazam에서 역사를 직접 파싱 할 수는 없습니다. JavaScript를 다시로드하는 작업이 많이 있고 그 문제를 해결하기가 더 어려울 것이기 때문입니다. 그래서 여기에서 찾을 수있는 다운로드 할 수있는 파일을 조작하고 싶습니다. http://www.shazam.com/myshazam/download-history
나는이 방법을 찾기 위해 노력하고 있지만 여기에 몇 가지 문제가 있습니다.
내가
import urllib
urllib.urlretrieve ("http://www.shazam.com/myshazam/download-history, "myshazam-history.html")
urlretrieve 사용할 계획했지만, 난 내가 그 파일을 다운로드 할 때 http://www.shazam.com/myshazam/download-history/myshazam-history.html 같은 실제 URL 경로 (즉, 제공이 없기 때문에이 전혀 작동 것조차 확실하지 않다 1 404 오류). 대신 해당 URL을 누르면 즉시 http://www.shazam.com으로 리디렉션되고 브라우저의 다운로드 창이 표시됩니다.
두 번째 문제는 여전히 세션의 쿠키를 보유해야하며 작동하는지 테스트하기 위해 urlretrieve로 전달하는 방법을 모르겠다는 것입니다. 아래에 로그인하여 세션을 유지 한 다음 웹 페이지를 구문 분석하는 테스트 코드가 있습니다.
def LoginFB(username,password):
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
url = "https://www.facebook.com/login.php?skip_api_lo....allthe_loginshazam_stuff)"
data = "&email="+username+"&pass="+password
socket = opener.open(url)
return socket, opener
def shazamParse(opener):
url = "http://www.shazam.com/myshazam/"
content = opener.open(url).read()
soup = BeautifulSoup(content)
finalParse = soup.prettify()
return finalParse.encode("utf-8")
(socket, opener) = LoginFB("email","password")
shazamParse(opener)
내가 로그온 한 사용자로 다운로드 URL (세션 쿠키를 잡고), 메모리에 파일을 다운로드 문자열로 파일의 내용을 넣고 BeautifulSoup로 그것을 구문 분석을 명중하고 싶은 . 내 shazamParse 함수와 정확히 같은 접근법은 myshazam-history.html 파일의 내용으로 문자열에서 읽는 것입니다.
어떻게하면 좋을까요?
파이썬에는이 작업을 자동화 할 여러 라이브러리가 있습니다. 능 직물이 제일 좋아. – Claris