zoukankan      html  css  js  c++  java
  • 获取新浪网的链接信息

    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"

  • 相关阅读:
    SQL 高级语法 (一)
    SQL 基础语法
    Memcache数据备份和还原
    OSPF原理及配置
    kubernetes全栈监控部署
    非容器化Jenkins连接Kubernetes
    Jenkins+Ansible安装部署
    Gitlab+Nexus Maven部署
    部署docker私有仓库Harbor
    LVS实现Kubernetes集群高可用
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2101465.html
Copyright © 2011-2022 走看看