2012-01-15 5 views
1

나는 웹 사이트에서 정보를 당겨하고 사용하여 파이썬 (이 경우 IP/위치 등의) 3제거 빈 줄은 파이썬

import urllib.request 

data = urllib.request.urlopen('http://www.maxmind.com/app/locate_my_ip') 
for search in data: 
    if b'align="center">' in search: 
     print(next(data).decode().rstrip()) 
data.close() 
내가/빈 줄을 제거 튜플에 정보를 넣어/등 변수로 저장할 수있는 방법

나는 수집 된 데이터를 사용할 수 있기를 원한다.

+1

이 대신 파이썬 API를 사용하여 고려 적이 있습니까? 'http : // www.maxmind.com/app/python' – jordanm

+0

@jordanm 하하, 오케이. 그래서 나는 그것을 보지 못했다. 나는 확실히 살펴볼 것이다. 포스트가 아직도 서 있지만 일반적인 질문입니다. – beoliver

답변

2

@jordanm에서 언급했듯이 가장 좋은 방법은 GeoIP Python API을 사용하는 것입니다.

귀하의 질문에 대답하지만

- 코드는 아마 다음과 같아야합니다 : 제가 테스트 문자열을 변경하고, 빈 줄이 포함되어 있습니다

import urllib.request, pprint 

data = urllib.request.urlopen('http://www.maxmind.com/app/locate_my_ip') 

fields = [] 
for line in data: 
    if b'class=output' in line: 
     fields.append(next(data).decode('iso-8859-1').strip()) 
data.close() 

참고. 이것은 필드가 인덱스로 쉽게 식별 될 수 있도록하기위한 것입니다. 필드 값에 액세스하려면

, 당신은 할 수 있습니다 :

address = fields[0] 
isp = fields[8] 
domain = fields[-1] 

특정 필드를 제거하려면 :

del fields[3], fields[4], fields[6] 
+0

고맙습니다 ... 나는 그때 내가 빈 배열 항목을 삭제하기 위해 del을 사용할 수 있다고 (순간에 파이썬으로 잠수를 읽음)? 진짜 질문 하나, 왜 'iso-8859-1'을 사용합니까? decode()가 아니라 – beoliver

+0

@ user969617. 필드 값으로 무엇을하고 싶습니까? 빈 필드를 제거하면 어떤 필드인지 알 수 없습니다. [''decode'] (http://docs.python.org/py3k/library/stdtypes.html#bytes.decode)의 질문에 :'encoding' 인자의 기본값은 "utf-8"이지만 올바른 인코딩은 웹 페이지의 경우 "iso-8859-1"입니다. – ekhumoro

+0

빈 필드를 제거해야 할 필요는 없습니다. 나는 그저 1, 2, 3, 5, 7 ... 대신에 1, 2, 3, 4 ... 등으로 그들을 참조 할 수있는 것처럼 깨끗한 것이라고 느꼈다. 그리고 파이썬을 사용하려고한다. 약간. 이 모든 이유는 Google에서 python을 사용하는 방법을 모르기 때문입니다. 언젠가 나는 겸손한 시작을 되돌아보고 웃을 수있게되기를 바랍니다. – beoliver

3

HTML 스 캐핑/파싱 등을 수행하는 경우 BeautifulSoup과 같은 라이브러리를 사용하십시오.

직접 스크래핑을 처리하는 것이 좋습니다.

+0

+1 BeautifulSoup. 그것은 최고입니다. – Blender