2011-09-08 4 views
3

craigslist rss 피드를 구문 분석하여 위치 정보를 추출하려고 시도하고 있습니다.python regex를 사용하여 Craigslist에서 주소 추출 RSS 피드

나는 feedparser을 사용하여 스크립트를 항목 및 항목 설명으로 구문 분석했습니다. 불행히도 주소 정보는 설명 섹션의 불규칙한 태그에 포함됩니다.

<!-- CLTAG xstreet0=11832 se 318pl --> 
<!-- CLTAG xstreet1= --> 
<!-- CLTAG city=auburn --> 
<!-- CLTAG region=wa --> 
11832 se 318pl 

Feedparser 그 CLTAGS을 좋아하지 않는다 :

주소는 다음과 같습니다 섹션에 포함되어 있습니다. 정규식을 사용하여 첫 번째 줄을 캡처하려는 시도는 다음과 같습니다.

addressStart = r'!-- CLTAG xstreet0=' 
addressEnd = r'-->' 

prog = re.compile(addressStart(.*?)addressEnd) 
result = prog.match(string) 

...하지만 작동하지 않았습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 여기에 RSS 피드에 대한 링크가 있습니다. 'http://seattle.craigslist.org/see/apa/index.rss'와 협력하고 있습니다.

도움이 정말 감사드립니다!

답변

2

잘못된 구문입니다. 문자열을 인용하지 않는 한 문자열을 연결/포맷 할 수 없습니다. 시도 :

addressStart = r'!-- CLTAG xstreet0=' 
addressEnd = r'-->' 

prog = re.compile(addressStart + r'(.*?)' + addressEnd) 
result = prog.match(string) 
+0

덕분에이 큰 일 – foundatron

2

는 이유는 라인이 <로 시작하지만 당신은 !로 시작하는 addressStart을 정의한다는 것입니다 (search 대신 match의 시도 search 문자열 어디서나 일치를 발견, match 만에 경기를 발견하면서. 시작은. 또는 당신은 최고의 <을 포함 addressStart을 재정의 할 수 있었다.)

>>> import re; 
>>> addressStart = r'!-- CLTAG xstreet0=' 
>>> addressEnd = r'-->' 
>>> prog = re.compile(addressStart + "(.*?)" + addressEnd) 
>>> string = "<!-- CLTAG xstreet0=11832 se 318pl -->" 
>>> result = re.search(prog, string) 
>>> result 
<_sre.SRE_Match object at 0x1004806c0> 
>>> result.group(1) 
'11832 se 318pl '