2011-05-03 5 views
1

사용자의 IP 주소를 출력하는 프로그램을 만듭니다. 그래서 나는 무엇을 하려는지 ipchicken.com의 HTML을 가져 와서 "이름 주소"부분만을 출력하려고합니다. 여기 내 코드는 지금까지 있습니다 :html에서 Python으로 텍스트 행을 가져 오는 방법

import urllib    
sock = urllib.urlopen("http://ipchicken.com") 
htmlSource = sock.read()   
sock.close() 
print htmlSource 

지금은 인쇄 html로의 IP 부분을 얻는 방법?

와 파이썬을 사용하여 사용자의 IP를 얻을 수있는 다른 방법이있는 경우

는, 그 aswell :

답변

2

그냥 변수 ips은 IP 구조로 모든 리터럴을 포함 htmlSource

ips = re.findall('(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})', 
       htmlSource) 

을 통해 IP 구조 패턴을 찾기 위해 정규식을 실행합니다.

전체 코드가 보일 것 같은 :

import urllib,re   
sock = urllib.urlopen("http://ipchicken.com") 
htmlSource = sock.read()   
sock.close() 
print htmlSource 
ips = re.findall('(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})', htmlSource) 
print "IPs in page", ips 
+0

스크린 긁기 ... 그리고 그것도 정규식으로. 나는 그것을 정말로 추천하지 않는다. –

+0

감사! 그것은 큰 도움이되었습니다! 게다가 뭔가 새로운 xD를 배웠습니다. 감사! –

+0

정규식으로 이것을 해결하는 것이 사소한 것처럼 보입니다. 모든 XML을 구문 분석하거나 BeautifulSoup을 사용하는 것과 같은 다른 솔루션은 나에게 잔인한 것처럼 보입니다. 색상의 문제입니다 ... –

2

BeautifulSoup처럼 HTML 긁어 라이브러리를 사용을 포함하시기 바랍니다.

+0

또는 [LXML] (http://lxml.de) –

1

regular expression을 사용하면 다른 텍스트 내의 텍스트를 가져올 수 있습니다. htmlSource의 관련 부분을 제공하는 경우 게시 할 수 있습니다. 여기

는 IP 주소를 검색에 대한 몇 가지 게시물입니다 How to find out your IP address in Python

+1

"다른 텍스트 내에서 텍스트를 잡아."예. [아마도 HTML에 적합한 도구가 아닙니다.] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454). – Johnsyweb

2

난 당신이 광고 라덴 인 같은 ifconfig.me 오히려 ipchicken보다 더 많은 프로그램 무언가를 사용하는 것이 좋습니다 것입니다. ifconfig.me는 cURL과 같은 쿼리를 받으면 다르게 동작합니다.

HTML을 구문 분석하고 ipchicken으로 IP 주소를 추출하려면 BeautifulSoup 또는 ElementTree을 사용하십시오.

갱신 : http://ip.appspot.com/은 프로그래밍 인터페이스 을 가지고 무언가이다.

+0

예, ipchicken 대신 코드에 xd 덕분에 링크를 사용했습니다! –

관련 문제