sgmllib.py 包含一个重要的类: SGMLParser。SGMLParser 将 HTML 分解成有用的片段, 比如开始标记和结束标记。一旦它成功地分解出某个数据为一个有用的片段,它会根据 所发现的数据,调用一个自身内部的方法。为了使用这个分析器,您需要子类化 SGML- Parser类,并且覆盖这些方法。

SGMLParser类里面包含了很多内部方法,开始读取html后,遇到相应的数据就会调用其对应的方法,最重要的方法有三个:

  • start_tagname(self, attrs)
  • end_tagname(self)
  • handle_data(self, text)

tagname就是标签名称,比如当遇到<pre>,就会调用start_pre,遇到</pre>,就会调用 end_pre,attrs即为标签的参数,以[(attribute, value), (attribute, value), ...]的形式传回,我们要做的就是在其子类重载自己感兴趣标签对应的函数。

from sgmllib import SGMLParser
import urllib
import urllib2
import socket
socket.setdefaulttimeout(210)

class URLLister(SGMLParser):
def reset(self):
self.url=[]
SGMLParser.reset(self)

def start_a(self,attrs):
href=[v for k,v in attrs if k=='href']
if href:
self.url.extend(href)

parser=URLLister()

myurl='http://www.sina.com.cn'
request=urllib2.Request(myurl)
opener=urllib2.build_opener()
page=opener.open(request)

if page.code==200:
predata=page.read()
parser.feed(predata)
print parser.url,"\n"

获取新浪网的链接信息相关推荐

  1. 独家 | 虚假疫苗网站如何获取你的个人信息

    作者: Lance Whitney翻译:陈超校对:王可汗本文约1000字,建议阅读3分钟本文揭示了诈骗网站如何利用人们对新冠疫苗信息的关注获取用户的个人信息. 该网站最近被政府查封,该网站仿造一家开发 ...

  2. Spring+Mybatis多数据源配置(三)——Spring如何获取Properties文件的信息

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  3. header python 环境信息_python获取网页header头部信息(python小白学习笔记二)

    方法一:代码查看 通过python获取网页的链接url,返回码,以及相关的信息 #对反爬虫网页,可以设置一些headers信息,模拟成浏览器取访问网站 import urllib.request ur ...

  4. 获取登录域帐号信息方式之 —-IIS(VB)

    前言 java web 项目如何获取客户端登录帐号信息(用于SSO或其他) 之前总结过一篇在Java 的Web 项目中获取客户端帐号信息的文章.参见以上链接的内容. 除了那些方式之外, 还可以使用II ...

  5. C/C++通过WMI和系统API函数获取获取系统硬件配置信息(转)

    前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU.内存.网络利用率等)和读取服务器的硬件配置参数的接口供项目组使用,就是一个类似于鲁大师之类的东东吧... 当然第一想法肯定是利用Windo ...

  6. Android系统信息获取 之十四:获取WIFI热点相关信息

    当在Android设备终端上使用Wifi热点的时候,需要获知Wifi热点的运行状态,热点是否打开,连接到该WIFI热点的设备数量,以及连接设备的具体IP和MAC地址. 使用re文件管理器去" ...

  7. php对接京东宙斯平台,利用京东联盟API获取自定义推广链接

    本文将简单介绍下京东联盟.京东宙斯两个平台,以及如何利用京东宙斯平台的京东联盟API来快速获取自定义推广链接. 关于京东联盟 京东联盟(去官网看看)是一个CPS模式的营销平台,我们可以使用自己的网站放 ...

  8. 使用IPMi获取服务器的硬件信息,如风扇转速、cpu等

    开启IPMI模块 IPMI是服务器的智能化管理平台接口,我们要通过这个接口获取所有的硬件信息以及控制服务器开关机. 使用IPMI的前提是服务器支持IPMI即带有BMC的硬件模块,将网线接到BMC模块就 ...

  9. 实现微信打开网页时,获取当前微信用户信息(Java)(基于snsapi_userinfo方式)

    /*** 1 第一步:用户同意授权,获取code* 2 第二步:通过code换取网页授权access_token* 3 第三步:刷新access_token(如果需要)* 4 第四步:拉取用户信息(需 ...

最新文章

  1. #Sora#OpenStack基础库oslo.config试用总结
  2. Navicat for SQLite 15中文版
  3. js中用到的正则表达式
  4. 面试:TCP协议面试10连问,总会用得到,值得收藏!
  5. 【SDOI 2014】数表
  6. Flume-NG + HDFS + HIVE 日志收集分析 | EyeLu技术Blog
  7. java虚拟机之一内存运行时数据区域解释
  8. iOS中的枚举:enum, NS_ENUM, NS_OPTIONS的使用区别
  9. linux中安装pip
  10. cr3格式是什么意思_如何用PS导入佳能CR3格式图片?
  11. matlab模糊闭包,基于matlab的模糊聚类分析
  12. Treap(二)——#10144. 「一本通 4.6 练习 1」宠物收养所
  13. 身体好比什么都强 [唱片]
  14. 线路板PCB产品和标准简介
  15. USB音频芯片/TYPE-C音视频处理芯片方案选型表
  16. sphinx启动searchd进程出现search error failed to open No such file or directory
  17. fopen及读写权限
  18. DSC曲线峰面积的确定及仪器校正
  19. JavaScript 随机正数或负数
  20. P2P流媒体开源项目介绍

热门文章

  1. 更改zabbix-server的端口
  2. 使用Sentinel配置Redis 3.x主从高可用服务
  3. 史上最快! 10小时大数据入门实战(五)-分布式计算框架MapReduce
  4. 《网络维护》MAC地址
  5. VR如何巧妙填补传统数据视觉化的漏洞
  6. 关于学习Mongodb的几篇文章
  7. vs编译protobuf 3.0.0
  8. mysql出现“Incorrect key file for table”解决办法
  9. 用lambda对std::list排序 - 力为的技术博客 - C++博客
  10. [linux]Linux挂载光盘,解压光盘内的tar安装包,并安装软件(Install VMware Tools in a Linux Guest)...