Фала за помошта.
Користам 2.7 Питон и стриктно за лична употреба.
Што се работи до urllib2 функциите основните работи ги сфатив, но не знам ни сам како да го анализирам сорс кодот од страницата која ми треба за да најдам повеќе информации затоа што немам искуство.
Малце каснам али сепак да пишам можеби на некој ќе му се најде...
Анализа на било каков код (во случајов од „фамилијата HTML“) има цела хиерархија односно за да можеш да обработиш некаков код најпрво треба да ги знаеш стандардите на истиот код што сакаш да го обработуваш па тек после со користење библиотеки или рачна имплементација да го обработуваш.
Конкретно за HTML разгледај ги
HTMLParser (од стандардната библиотека),
SGMLParser (исто така од стандардната V2.* библиотека, во V3 овој модул е отстранет) и
BeautifulSoup.
Напомена: Со овие модули можеш да обратуваш само HTML и XHTML, а HTML5 неможеш и исто така не е паметно да обработуваш код со Regular Expression затоа што самиот збор ти кажува регуларни изрази, а HTML кодот не е регуларен израз.
---
Него темава замрела, малце да ја живнам
Често гледам по форумиве прашуваат како да ја одредат локацијата на клиентот по IP адресата, правев нешто за мене па реков да го ипшам и тука.
Значи кодот е во Python, го користи API-то на HostIP и за дадена IP адреса одредува град, држава, кратенка на државата и геолокација, не сум го разгледал детално API-то, ама ако не се лажам информациите за IP адресата се однесуваат на провајдерот кој ја опслужува дадената IP адреса, а не конкретно за клиентот, еве го кодот:
Код:
#!/usr/bin/python
# -*- coding: utf-8 -*-
##################################################
# ip2country Class
# Only for IPv4 using hostip API - (Python v2.*)
#-------------------------------------------------
# Copyright: (c) 2011 by SkyDriver.
# License: GNU General Public License (GPL)
# Feedback: krstevsky[at]gmail[dot]com
##################################################
from xml.dom.minidom import parseString, Element
from urllib2 import build_opener
class ip2country(object):
"""Class ip2country"""
def __init__(self):
"""Object constructor"""
self.__url = "http://api.hostip.info/?ip="
def __del__(self):
"""Object destructor"""
del(self.__url)
def __opener(self):
"""Returns HTTP request opener"""
UserAgent = "ip2country Python bot"
opener = build_opener()
opener.addheaders = [('User-agent', UserAgent)]
return opener
def __get_data(self, dom, tag):
"""Get the value from XML element"""
v = dom[0].getElementsByTagName(tag)
if len(v) != 1 or len(v[0].childNodes) != 1:
return ""
if not v[0] or v[0].firstChild.nodeType != Element.TEXT_NODE:
return ""
return v[0].firstChild.data
def read(self, ip):
"""Get the information for given IP"""
if not ip:
raise ValueError("IP address can't be empty!")
opener = self.__opener()
xml = opener.open(self.__url + ip).read()
dom = parseString(xml)
n = dom.getElementsByTagName("Hostip")
data = dict({
"ip" : self.__get_data(n, "ip"),
"city" : self.__get_data(n, "gml:name"),
"country" : self.__get_data(n, "countryName"),
"abbrev" : self.__get_data(n, "countryAbbrev"),
"coordinates" : self.__get_data(n, "gml:coordinates")
})
return data
еве и еден тест пример со IP адресата на Google (74.125.39.147)
>>> ================================ RESTART ================================
>>>
>>> ip = "74.125.39.147"
>>> ip_info = ip2country().read(ip)
>>> for key in ip_info:
print key + ": " + ip_info[key]
ip: 74.125.39.147
abbrev: US
city: Mountain View, CA
coordinates: -122.078,37.402
country: UNITED STATES
>>>