首页 > 其他 > 详细

爬虫的修养-博客篇

时间:2015-02-12 00:34:37      阅读:283      评论:0      收藏:0      [点我收藏+]
  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();
  • 最后,我们可以看下我们的执行效果:

技术分享 技术分享

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

  • 唠叨语:

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

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

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

爬虫的修养-博客篇

原文:http://www.cnblogs.com/courtier/p/4287177.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!