scrapy框架第一章
操作环境:python2.7+scrapy

安装比较简单,网上教程也超多,就不在此赘述。
示例网站:https://www.cnblogs.com/cate/python/ (爬去关于博客园所有python的帖子)
#############开始新建项目 E:work\scrapy_pro\
打开cmd(命令行窗口)

cd 进入文件夹 cd..回到上一级 进入某个盘符直接输入E: 大小写没关系
############执行新建项目命令 项目名 cnblog
scrapy startproject cnblog

创建ok,进入项目cd cnblog ,操作该项目时在这一层目录。
目录如下

dir-spiders:存放所有spider的文件,里面的spider文件自己新建。
items.py:用来存放爬去的内容,在导出数据时需要用到
middlewares.py:中间件文件,写入多余的功能,比如需要与PhantomJs结合使用时修改这里。
pipelines.py:暂时没用过。
settings.py:项目配置文件。
######打开spiders文件夹开始新建spider文件 test.py 名字无所谓

打开test.py
# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
###引入的是items.py里面构造的类
from cnblog.items import ExampleItem class TestSpider(CrawlSpider):
name = 'blog'
allowed_domains = ['cnblogs.com']
start_urls = ['https://www.cnblogs.com/cate/python/'] rules = (
###爬去索引页并跟踪其中链接
###查找start_urls 所有的分页页面
Rule(LinkExtractor(allow=r'/cate/python/[2-9]*'), follow=True),
###爬去items页面并将下载响应返回个头parse_item函数
####查询每个分页页面的详情页
Rule(LinkExtractor(allow=r'http://www.cnblogs.com/[a-z]*/p/[0-1]*'), callback='parse_item', follow=False
),
) def parse_item(self, response):
item = ExampleItem()
#i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()
#i['name'] = response.xpath('//div[@id="name"]').extract()
#i['description'] = response.xpath('//div[@id="description"]').extract()
#print response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract()
if response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract():
item['blog_name'] = response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract()
else:
item['blog_name'] = 'null'
items = []
items.append(item)
return items
items.py
# -*- coding: utf-8 -*- # Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html import scrapy class ExampleItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
blog_name = scrapy.Field()
上面是两个需要用到的两个文件
前面的是spider文件,另一个是定义存储的内容文件
items.py
blog_name = scrapy.Field() //定义一个获取的字段,获取详情页的标题
test.py
from scrapy.linkextractors import LinkExtractor ##引入linkextractors 用于筛选链接和跟进链接,还有很多功能,可以去百度下
from scrapy.spiders import CrawlSpider, Rule ##定义spider的模板,引入Rule规则
from example.items import ExampleItem ##引入定义的items.py
下面是对类的详细介绍
class TestSpider(CrawlSpider): ##继承模板CrawlSpider 普通模板继承Spider
name = 'blog' ###定义spider名 运行---$ scrapy crawl blog
allowed_domains = ['cnblogs.com'] ## 定义查找范围
start_urls = ['https://www.cnblogs.com/cate/python/'] ###初始url
###通过rules限定查找的url
###分页的url ='/cate/python/[2-9]*'
###详情页的url = 'http://www.cnblogs.com/[a-z]*/p/[0-1]*'
####当有follow=True 则会跟进该页面
####原理就是 spider在初始页面查找,同时查找帖子详情页的url和下一个分页,同时跟进下一个分页页面,继续查找下一个分页页面和上面的详情页url,详情页面使用回调函数进行采集
rules = (
###爬去索引页并跟踪其中链接
###查找start_urls 所有的分页页面
Rule(LinkExtractor(allow=r'/cate/python/[2-9]*'), follow=True),
###爬去items页面并将下载响应返回个头parse_item函数
####查询每个分页页面的详情页
Rule(LinkExtractor(allow=r'http://www.cnblogs.com/[a-z]*/p/[0-1]*'), callback='parse_item', follow=False
),
)
####详情页面回调函数
def parse_item(self, response):
###实例化item类
item = ExampleItem()
###几种xpath获取标签的方式
#i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()
#i['name'] = response.xpath('//div[@id="name"]').extract()
#i['description'] = response.xpath('//div[@id="description"]').extract()
#print response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract()
if response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract():
item['blog_name'] = response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract()
else:
item['blog_name'] = 'null'
items = []
###把数据装进仓库
items.append(item)
return items
#####现在开始执行spider
切换到当前目录

—————————导出json文件

scrapy框架第一章的更多相关文章
- Nova PhoneGap框架 第一章 前言
Nova PhoneGap Framework诞生于2012年11月,从第一个版本的发布到现在,这个框架经历了多个项目的考验.一直以来我们也持续更新这个框架,使其不断完善.到现在,这个框架已比较稳定了 ...
- Scrapy框架: 第一个程序
首先创建项目: scrappy start project maitian 第二步: 明确要抓取的字段items.py import scrapy class MaitianItem(scrapy.I ...
- 自定义MVC框架---第一章
MVC基本介绍 介绍: mvc是一种编程思想,用来解决开发项目的时候,代码如何编写,项目如何架构的问题,更具体一点就是解决多人协同开发时,如何分工协作的问题,从而提升开发效率 举一个例子:有一个人想 ...
- 路飞学城-Python爬虫集训-第一章
自学Python的时候看了不少老男孩的视频,一直欠老男孩一个会员,现在99元爬虫集训果断参与. 非常喜欢Alex和武Sir的课,技术能力超强,当然讲着讲着就开起车来也说明他俩开车的技术也超级强! 以上 ...
- Learning Scrapy 中文版翻译 第一章
第一章:scrapy介绍 欢迎来到scrapy之旅.通过这本书,我们将帮助你从只会一点或者零基础的Scrapy初学者达到熟练使用这个强大的框架在互联网或者其他资源抓取海量的数据.在这一章节,我们将给你 ...
- 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述
微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...
- 《Entity Framework 6 Recipes》翻译系列(2) -----第一章 开始使用实体框架之使用介绍
Visual Studio 我们在Windows平台上开发应用程序使用的工具主要是Visual Studio.这个集成开发环境已经演化了很多年,从一个简单的C++编辑器和编译器到一个高度集成.支持软件 ...
- 第一章 自定义MVC框架
第一章 自定义MVC框架1.1 MVC模式设计 组成:Model:模型,用于数据和业务的处理 View :视图,用于数据的显示 Controller:控制器 ...
- jQuery系列 第一章 jQuery框架简单介绍
第一章 jQuery框架简单介绍 1.1 jQuery简介 jQuery是一款优秀的javaScript库(框架),该框架凭借简洁的语法和跨平台的兼容性,极大的简化了开发人员对HTML文档,DOM,事 ...
随机推荐
- 玩转html
简介 CSS 是什么? CSS是Cascading Style Sheets的简称,中文称为层叠样式表. 作用 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象 ...
- ajax的跨域请求
同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的 ...
- WCF、WebAPI、WCFREST、WebService之间的区别和选择
转载翻译,原文:http://www.dotnet-tricks.com/Tutorial/webapi/JI2X050413-Difference-between-WCF-and-Web-API-a ...
- 导入Excel 文件(图片和文字)NPOI+BootStrap fileinput 插件 的结合使用
1.页面代码: <!DOCTYPE html><html><head> <meta name="viewport" content=&qu ...
- php面向对象(OOP)编程完全教程(转载笔记,有兴趣可以看看))
http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/09/10/1823042.html
- CCS模块库文件的生成与使用
在一个大的项目中,为了便于管理,有时需要将一个模块封装为库文件,并可以在项目中使用. 图表 1 项目 步骤如下: 1.右键-->new-->CCS Project 图表 2 新建ccs p ...
- 【NOIP2003提高组】加分二叉树
https://www.luogu.org/problem/show?pid=1040 令f(i,j)表示[i,j]的二叉树中最高的分数.枚举k为根,状转方程:f(i,j)=max{f(i,k-1)* ...
- Material使用03 MdCardModule模块、MdInputModule模块
需求:先需要增加一个登录模块 1 创建登录模块 ng g m testLogin 1.1 将共享模块导入到登录模块中 import { NgModule } from '@angular/core'; ...
- VMWare 虚拟化 Ubuntu 64 (16.04)-- docker 无法链接 pull 镜像 ?(solved)
背景 根据项目的需要,虚拟化一个Ubuntu OS 来玩 docker,虚拟机选择的是WMWare (VMware-player-14.0.0-6661328); Ubuntu的镜像来自于官网(ubu ...
- BMC手册 — 第一模块 BMC介绍
BMC的监控 其实是BPPM与 Patrol 产品的结合.早期它们二个是单独监控产品,后来BPPM被BMC收购.拿来与patrol产口集成产品整合后,BPPM主要用来做展示与告警处理,底层采集采用pa ...