爬虫的修养-博客篇

  1. 此次的爬虫对象是:http://blog.csdn.net/sinyu890807的文章
  2. 请务必理解:python的基础(http://www.cnblogs.com/courtier/p/4285897.html),urllib基本使用,了解http协议
  • 首先,为了不让服务器报403,我们必须设置个能随机User-Agent的列表:
#user_agent
    _header = ['Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30'
          ,'Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0',
          'Mozilla/5.0 (Windows; U; Windows NT 5.1; ) AppleWebKit/534.12 (KHTML, like Gecko) Maxthon/3.0 Safari/534.12'];
  • 接下来,让他们随机并设置消息头:
def connectURL(self,page):
        print "正在连接....."

        head = random.choice(self._header);

        req = urllib2.Request(page);

        req.add_header('User-Agent',self._header);
        req.add_header('Host','blog.csdn.net');
        req.add_header('Referer','http://blog.csdn.net/');
        req.add_header('GET',page);
        #页面的全部内容
        return urllib2.urlopen(req).read();
  • 把爬虫爬到的内容,用正则来获取我们需要的:
def parseTolist(self,info):
        li = [];
        reg = r'<span class="link_title"><a href="(/guolin_blog/article/details/[0-9]+)">([^v]*)(?=</a>)';
        pat = re.compile(reg);#编译正则
         Blog_Link = re.findall(pat,info);
        #print Blog_Link;
        for i in Blog_Link:
            msg = i[1].replace("\r\n        ","");
            li.append(msg+':'+'http://blog.csdn.net'+i[0]);
        return li;
  • 调用一下,下面面的方法(默认是放到”D:\\python\\link.txt”):
def wisdomBug(self):
         #打印页面
            for k in range(1,self.pagecount):
            page = self.url+str(k);
            print '引擎正在:'+page;
            #parese--文章列表
            info = self.connectURL(page);
            li = self.parseTolist(info);
            #save --保存
            for i in li:
                f = open("D:\\python\\link.txt",'a');
                f.write(i+os.linesep*2);
                f.close();
  • 最后,我们可以看下我们的执行效果:

QQ图片20150211234636 QQ图片20150211234725

源代码:(https://github.com/aliencool/Python/blob/master/connect.py)

  • 唠叨语:

        如果,有些网站动态User-Agent无法使用,那就要更高级的“代理IP”来使用了。其实,用Python坐爬虫可以做很多事情的,比如,

        查12306车票呀、爬一些新闻文章。我的此次博文个人总结只是入门级别,还有很多好的爬虫框架可以爬取更多信息更高效(多线程)

        希望,我们一起能继续深入,提供更好的博文。

转载于:https://www.cnblogs.com/courtier/p/4287177.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值