python 网络爬虫(一) 简单demo

用python写爬虫的最简单的版本。

效果是把目标URL的所有想要的URL抓出来。

URLLister.py

from sgmllib import SGMLParser

class URLLister(SGMLParser):
    def reset(self):
        SGMLParser.reset(self)
        self.urls = []
        self.imgs = []
    def start_a(self,attrs):
        href = [v for k, v in attrs if k == 'href']
        if href:
            self.urls.extend(href)

    def start_img(self,attrs):
        img = [v for k, v in attrs if k == 'src']
        if img:
            self.imgs.extend(img)

    
科普1:append() 和extend() 一开始没有注意,前者是在列表尾追加一个元素,后者是追加一个列表。

科普2:href = [v for k, v in attrs if k == 'href'] 返回一个匹配key值为'href'的values的集合。

科普3:class中的元素,都要用self来引用,不加就是全局变量啦。


test.py

import urllib,URLLister

parser = URLLister.URLLister()
url = urllib.urlopen("http://www.baidu.com")
parser.feed(url.read())
url.close()
parser.close()

for u in parser.urls:
    print u
for i in parser.imgs:
    print i
科普4:urllib在python标准库中。

科普5:urlopen() 如文件对象一般,打开一个web url,所以也要close()。

科普6:SGMLParser的feed(str)就是把str填充给SGMLParser去解析。


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值