2014-02-11 3 views
0

읽기 html 디렉토리에서 "urllib2가"를 사용하여 최신 파일을받는 방법내가 HTTP 폴더에서 최신 파일을 읽고 싶습니다 파이썬

가 '릴리스'폴더 0001.tgz, 0002.tgz, 0003.tgz 같이해야한다 0003 만드는 방법 0003을 선택합니까?

import urllib2 

url = "http://example.com/releases" 
html = urllib2.urlopen(url).read() 
... 

감사합니다. 몇 가지 예를 들어주세요.

+0

해당 디렉토리의 디렉토리 색인에 대한 액세스 권한이 있습니까? –

+0

예, HTML 형식입니다. 최신순으로 정렬하거나 날짜에 대한 매핑을 수행하십시오. – azmilhafiz

답변

2

당신은 디렉토리 인덱스를 분석하고 명명 규칙에 따라 인덱스의 마지막 아마도 수있는 최신 파일을 찾을 BeautifulSoup 또는 lxml를 사용할 수 있습니다. 이 같은

뭔가 : 문제가 해결되지 않을 경우

from bs4 import BeautifulSoup 
import urllib2 

url = "http://example.com/releases" 
html = urllib2.urlopen(url).read() 

soup = BeautifulSoup(html) 

last_link = soup.find_all('a', href=True)[-1] 

latest_content = urllib2.urlopen(last_link['href']).read() 
# do stuff 

은 파일 이름에 따라 좀 더주의 깊은 분석을 find_all를 사용하여 모든 링크를 잡고 않습니다.

+0

예,이게 내가 찾고있는 것입니다. "href"매핑하고 마지막 것을 가져옵니다. 좋은 본보기를 가져 주셔서 감사합니다. – azmilhafiz

+1

여기에는 디렉토리에 다른 파일 유형이 없다고 가정합니다. – philshem

+0

예. 그러나 파일 찾기가 여러개있는 경우 (findinall은 존재하지 않는 것처럼 보입니다) 파일 확장자로'find_all'과 filter를 사용할 수 있습니다. –

0

.tgz 파일이 순차적이면 최대 (최대)부터 카운트 다운하고 첫 번째 (최신) 파일에 도달하면 루프를 중지하십시오.

import urllib2 

for counter in xrange(9999,0,-1): 
    fyle = str(counter).zfill(4) # pad zeros 
    url = "http://example.com/releases/"+fyle+".tgz" 
    ret = urllib2.urlopen(url) 
    if ret.code == 200: 
     print "Exists:",fyle 
     break 

    html = urllib2.urlopen(url).read() 
+0

꽤 오래 걸릴 수도 있습니다 ... –

+0

이 코드도 사용할 수 있습니다. 이것은 매우 도움이됩니다. 이 예제를 주셔서 대단히 감사합니다. – azmilhafiz

+0

여러분을 환영합니다! 내가 당신의 특정 응용 프로그램에 대한 속도에 대해 궁금 할 것입니다. – philshem

관련 문제