Python爬虫(二)–豆瓣抓站小计


1. 豆瓣抓站流程

    分析url特征(菜鸟阶段)对需要抓取的数据设计正则表达式处理HTML中一些特征字符,换行符等

注意异常的处理和字符编码的处理

2. 实现的功能

简单的实现了抓取豆瓣电影Top100的电影名称

3. 后期工作展望抓取更多的有用数据(如:准确抓取导演, 抓取一个电影评论)使用多线程爬虫学习第三方的爬虫框架(Scrapy)深入理解HTML编码和文本处理4. 输出结果

Top1 肖申克的救赎Top2 这个杀手不太冷Top3 阿甘正传Top4 霸王别姬Top5 美丽人生...Top96 菊次郎的夏天Top97 驯龙高手Top98 真爱至上Top99 致命IDTop100 超脱

5. 豆瓣抓站源代码

#!/usr/bin/python2# -*- coding:utf-8 -*-"""一个简单的Python爬虫, 用于抓取豆瓣电影Top前100的电影的名称Anthor: Andrew LiuVersion: 0.0.1Date: 2014-12-04Language: Python2.7.8Editor: Sublime Text2Operate: 具体操作请看README.md介绍"""import stringimport reimport urllib2class DouBanSpider(object) :    """类的简要说明    本类主要用于抓取豆瓣前100的电影名称        Attributes:        page: 用于表示当前所处的抓取页面        cur_url: 用于表示当前争取抓取页面的url        datas: 存储处理好的抓取到的电影名称        _top_num: 用于记录当前的top号码    """    def __init__(self) :        self.page = 1        self.cur_url = "http://movie.douban.com/top250?start={page}&filter=&type="        self.datas = []        self._top_num = 1        print "豆瓣电影爬虫准备就绪, 准备爬取数据..."    def get_page(self, cur_page) :        """        根据当前页码爬取网页HTML        Args:             cur_page: 表示当前所抓取的网站页码        Returns:            返回抓取到整个页面的HTML(unicode编码)        Raises:            URLError:url引发的异常        """        url = self.cur_url        try :            my_page = urllib2.urlopen(url.format(page = (cur_page - 1) * 25)).read().decode("utf-8")        except urllib2.URLError, e :            if hasattr(e, "code"):                print "The server couldn't fulfill the request."                print "Error code: %s" % e.code            elif hasattr(e, "reason"):                print "We failed to reach a server. Please check your url and read the Reason"                print "Reason: %s" % e.reason        return my_page    def find_title(self, my_page) :        """        通过返回的整个网页HTML, 正则匹配前100的电影名称                Args:            my_page: 传入页面的HTML文本用于正则匹配        """        temp_data = []        movie_items = re.findall(r'<span.*?class="title">(.*?)</span>', my_page, re.S)        for index, item in enumerate(movie_items) :            if item.find("") == -1 :                temp_data.append("Top" + str(self._top_num) + " " + item)                self._top_num += 1        self.datas.extend(temp_data)        def start_spider(self) :        """        爬虫入口, 并控制爬虫抓取页面的范围        """        while self.page <= 4 :            my_page = self.get_page(self.page)            self.find_title(my_page)            self.page += 1def main() :    print """        ###############################            一个简单的豆瓣电影前100爬虫            Author: Andrew_liu            Version: 0.0.1            Date: 2014-12-04        ###############################    """    my_spider = DouBanSpider()    my_spider.start_spider()    for item in my_spider.datas :        print item    print "豆瓣爬虫爬取结束..."if __name__ == '__main__':    main()

6. 参考链接

个人使用的Python编码规范python正则表达式小计


1. 豆瓣抓站流程

    分析url特征(菜鸟阶段)对需要抓取的数据设计正则表达式处理HTML中一些特征字符,换行符等

注意异常的处理和字符编码的处理

2. 实现的功能

简单的实现了抓取豆瓣电影Top100的电影名称

3. 后期工作展望抓取更多的有用数据(如:准确抓取导演, 抓取一个电影评论)使用多线程爬虫学习第三方的爬虫框架(Scrapy)深入理解HTML编码和文本处理

Python爬虫(二)–豆瓣抓站小计

相关文章:

你感兴趣的文章:

标签云: