@twein89
2017-12-21T09:52:54.000000Z
字数 1207
阅读 875
爬虫
参考api文档
页面解析器pyquery文档
框架作者博客里有pyspider中文系列教程,可以先看这个
一般流程:
mkdir demo_project
cd demo_project
mkdir demo
vim demo/demo.py(或任意文本编辑器)
开始编码demo.py
以下例子在pyspider 爬虫教程(二):AJAX 和 HTTP的基础上扩展
from pyspider.libs.base_handler import *from pprint import pprintclass Handler(BaseHandler):def on_start(self):url = 'http://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0'self.crawl(url, callback=self.json_parser)def json_parser(self, response):# pprint(response.json)subjects = response.json['subjects']for each in subjects:# pprint(each)movie_url = each['url']# example url: https://movie.douban.com/subject/26691320/self.crawl(movie_url, callback=self.movie_parser)# 解析出电影名和评分def movie_parser(self, response):# pprint(response.text)# html页面解析参考pyquery文档movie_item = {'movie_name': response.doc('#content > h1 > span').text(),'movie_score': response.doc('.ll.rating_num').text()}# movie_item 为一个处理好的数据# return 的数据会在on_result方法里处理return movie_item# 一般在on_result方法里进行数据保存操作def on_result(self, result):# 过滤为None的resultif not result:returnmovie_item = resultpprint(movie_item)
调试可以直接使用print语句输出信息
推荐在命令行里使用pyspider框架的one命令,比在网页中调试更方便:
cd demo_project
pyspider one demo/demo.py
命令行里会输出print的信息,pprint的输出会更友好美观。