python html解析

本文介绍了一种使用Python通过IP地址获取地理位置的方法。通过抓取网页内容并解析,可以快速定位到IP地址对应的地理位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面以获取IP地址的物理位置作简要记录,以备后用:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import urllib2, HTMLParser, re

class IPParser(HTMLParser.HTMLParser):
	def __init__(self):
		HTMLParser.HTMLParser.__init__(self)
		
		url = "http://iframe.ip138.com/ic.asp"
		try:
			fp = urllib2.urlopen(url, timeout=5)
			souce = fp.read()
			fp.close()
			self.feed(souce)
		except:
			print "So sorry!"

	def handle_starttag(self, tag, attrs):
		self.flag = tag
		if tag == "meta":
			tmp = re.findall("charset=([A-Za-z0-9-]*)", str(attrs))
			if tmp:
				self.code = tmp[0]

	def handle_data(self, data):
		if self.flag == "center":
			self.info = data#.decode(self.code).encode("UTF-8")
			
	def handle_endtag(self, tag):
		if tag == "center":
			print self.info.decode(self.code).encode("UTF-8")
	

if __name__ == "__main__":
	IPParser()

更详细的用法请参考官方文档: http://docs.python.org/2/library/htmlparser.html

对于上面的获取方式还可以:

html = urllib2.urlopen("http://iframe.ip138.com/ic.asp").read().decode("GB2312")
print re.findall("<center>(.*)</center>", html)[0].encode("UTF-8")


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值