• 爬虫的修养-博客篇


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

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

  • 相关阅读:
    C# 泛型
    EventHandler<TEventArgs>委托
    只能输入数字 ,只能有一位小数点。
    MVC过滤器 AuthorizeAttribute使用
    NuGet EntityFramework 常用命令
    Stride游戏引擎试毒
    Unity EditorWindow GUI裁剪
    unity2017自定义编译dll
    Unity
    WPF
  • 原文地址:https://www.cnblogs.com/courtier/p/4287177.html
Copyright © 2020-2023  润新知