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爬虫(二)–豆瓣抓站小计, 感谢原作者分享。 灯红酒绿的城市,登上楼顶,俯视万家灯火,