2010-12-31 4 views
3

4chan 사이트의 소스를 가져 와서 스레드에 대한 링크를 가져 오려고했습니다.re.findall (duplicates) 문제

regexp (작동하지 않음)에 문제가 있습니다. 출처 :

import urllib2, re 

req = urllib2.Request('http://boards.4chan.org/wg/') 
resp = urllib2.urlopen(req) 
html = resp.read() 

print re.findall("res/[0-9]+", html) 
#print re.findall("^res/[0-9]+$", html) 

문제가 있습니다 :

print re.findall("res/[0-9]+", html) 

중복을주고있다. 내가 사용할 수 없습니다

은 :

print re.findall("^res/[0-9]+$", html) 

나는 파이썬 문서를 읽고 있지만 도움이되지 않았다.

+6

그래서 '정규식으로 HTML을 구문 분석'이 작동하지 않습니다. BeautifulSoup 가져와. – user225312

+4

똑같은 "중복"을 반환합니다. :) –

답변

11

원본에 링크의 복사본이 여러 개 있기 때문입니다.

세트에 넣어서 쉽게 만들 수 있습니다.

>>> print set(re.findall("res/[0-9]+", html)) 
set(['res/3833795', 'res/3837945', 'res/3835377', 'res/3837941', 'res/3837942', 
'res/3837950', 'res/3100203', 'res/3836997', 'res/3837643', 'res/3835174']) 

그러나 이보다 더 복잡한 작업을 수행하려는 경우 HTML을 구문 분석 할 수있는 라이브러리를 사용하는 것이 좋습니다. BeautifulSoup 또는 lxml입니다.

+0

와우, 너무 간단했습니다. 많은 감사합니다 Lennart! – SnZ