scrapy作为流行的python爬虫框架,简单易用,这里简单介绍如何使用该爬虫框架爬取个人博客信息。关于python的安装和scrapy的安装配置请读者自行查阅相关资料,或者也可以关注我后续的内容。
 
本文使用的python版本为2.7.9  scrapy版本为0.14.3 
 
1.假设我们爬虫的名字为vpoetblog
  在命令行下切换到桌面目录,输入startproject scrapy vpoetblog 如下图所示:
 
 命令执行成功后会在桌面生成一个名为vpoetblog的文件夹
该文件夹的目录为:
│  scrapy.cfg
│
└─vpoetblog
│ items.py
│ pipelines.py
│ settings.py
│ __init__.py
│
└─spiders
__init__.py
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这里我们要新建一些文件,最终的目录结构如下:

│  scrapy.cfg
│ data.txt //用于保存抓取到的数据
└─doubanmoive
│ items.py //用于定义抓取的item
│ pipelines.py //用于将抓取的数据进行保存
│ settings.py
│ __init__.py
│
└─spiders
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
	   blog_spider.py  //主爬虫函数 用于定义抓取规则等
__init__.py
  • 1
  • 2
items.py内容如下:
  1. # -*- coding: cp936 -*-
  2. from scrapy.item import Item, Field
  3. class VpoetblogItem(Item):
  4. # define the fields for your item here like:
  5. # name = Field()
  6. article_name = Field() #文章名字
  7. public_time = Field()  #发表时间
  8. read_num = Field()     #阅读数量
pipelines.py内容如下:
  1. # -*- coding: utf-8 -*-
  2. import sys
  3. reload(sys)
  4. sys.setdefaultencoding('utf-8')
  5. from scrapy.exceptions import DropItem
  6. from scrapy.conf import settings
  7. from scrapy import log
  8. class Pipeline(object):
  9. def __init__(self):
  10. print 'abc'
  11. def process_item(self, item, spider):
  12. #Remove invalid data
  13. #valid = True
  14. #for data in item:
  15. #if not data:
  16. #valid = False
  17. #raise DropItem("Missing %s of blogpost from %s" %(data, item['url']))
  18. #print 'crawl no data.....\n'
  19. #if valid:
  20. #Insert data into txt
  21. input = open('data.txt', 'a')
  22. input.write('article_name:'+item['article_name'][0]+'   ');
  23. input.write('public_time:'+item['public_time'][0]+'   ');
  24. input.write('read_num:'+item['read_num'][0]+'   ');
  25. input.close()
  26. return item
settings.py内容如下:
  1. # Scrapy settings for vpoetblog project
  2. #
  3. # For simplicity, this file contains only the most important settings by
  4. # default. All the other settings are documented here:
  5. #
  6. #     http://doc.scrapy.org/topics/settings.html
  7. #
  8. BOT_NAME = 'vpoetblog'
  9. BOT_VERSION = '1.0'
  10. SPIDER_MODULES = ['vpoetblog.spiders']
  11. NEWSPIDER_MODULE = 'vpoetblog.spiders'
  12. ITEM_PIPELINES={
  13. 'vpoetblog.pipelines.Pipeline':300
  14. }
  15. DOWNLOAD_DELAY = 2
  16. RANDOMIZE_DOWNLOAD_DELAY = True
  17. USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5'
  18. COOKIES_ENABLED = True

blog_spider.py内容如下:

  1. # -*- coding: utf-8 -*-
  2. from scrapy.selector import HtmlXPathSelector
  3. from scrapy.contrib.spiders import CrawlSpider,Rule
  4. from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
  5. from vpoetblog.items import VpoetblogItem
  6. class MoiveSpider(CrawlSpider):
  7. name="vpoetblog"
  8. allowed_domains=["blog.csdn.net"]
  9. start_urls=["http://blog.csdn.net/u013018721/article/list/1"]
  10. rules=[
  11. Rule(SgmlLinkExtractor(allow=(r'http://blog.csdn.net/u013018721/article/list/\d+'))),
  12. Rule(SgmlLinkExtractor(allow=(r'http://blog.csdn.net/u013018721/article/details/\d+')),callback="parse_item"),
  13. ]
  14. def parse_item(self,response):
  15. sel=HtmlXPathSelector(response)
  16. item=VpoetblogItem()
  17. item['article_name']=sel.select('//*[@class="link_title"]/a/text()').extract()
  18. item['public_time']=sel.select('//*[@class="link_postdate"]/text()').extract()
  19. item['read_num']=sel.select('//*[@class="link_view"]/text()').extract()
  20. return item

运行命令如下:
 
运行截图如下:

windows下使用python的scrapy爬虫框架,爬取个人博客文章内容信息的更多相关文章

  1. 手把手教大家如何用scrapy爬虫框架爬取王者荣耀官网英雄资料

    之前被两个关系很好的朋友拉入了王者荣耀的大坑,奈何技术太差,就想着做一个英雄的随查手册,这样就可以边打边查了.菜归菜,至少得说明咱打王者的态度是没得说的,对吧?大神不喜勿喷!!!感谢!!废话不多说,开 ...

  2. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  3. scrapy爬虫框架爬取招聘网站

    目录结构 BossFace.py文件中代码: # -*- coding: utf-8 -*-import scrapyfrom ..items import BossfaceItemimport js ...

  4. python 爬虫 爬取序列博客文章列表

    python中写个爬虫真是太简单了 import urllib.request from pyquery import PyQuery as PQ # 根据URL获取内容并解码为UTF-8 def g ...

  5. Python之Scrapy爬虫框架安装及简单使用

    题记:早已听闻python爬虫框架的大名.近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享.有表述不当之处,望大神们斧正. 一.初窥Scrapy Scrapy是一个为了爬取网站数据,提 ...

  6. 【python】Scrapy爬虫框架入门

    说明: 本文主要学习Scrapy框架入门,介绍如何使用Scrapy框架爬取页面信息. 项目案例:爬取腾讯招聘页面 https://hr.tencent.com/position.php?&st ...

  7. 【网络爬虫】【python】网络爬虫(五):scrapy爬虫初探——爬取网页及选择器

    在上一篇文章的末尾,我们创建了一个scrapy框架的爬虫项目test,现在来运行下一个简单的爬虫,看看scrapy爬取的过程是怎样的. 一.爬虫类编写(spider.py) from scrapy.s ...

  8. 【Python】【爬虫】爬取酷狗TOP500

    好啦好啦,那我们来拉开我们的爬虫之旅吧~~~ 这一只小爬虫是爬取酷狗TOP500的,使用的爬取手法简单粗暴,目的是帮大家初步窥探爬虫长啥样,后期会慢慢变得健壮起来的. 环境配置 在此之前需要下载一个谷 ...

  9. Webmagic 爬虫框架 爬取马蜂窝、携程旅游、汽车之家游记信息

    WebMagic学习 遇到的问题 Log4j错误 解决:在src目录下添加配置文件 log4j.properties log4j.rootLogger=INFO, stdout, file log4j ...

随机推荐

  1. SHFileOperation的用法

    //删除文件或者文件夹bool DeleteFile(char * lpszPath){SHFILEOPSTRUCT FileOp={0};FileOp.fFlags = FOF_ALLOWUNDO ...

  2. React package.json详解

    概述: 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文件 ...

  3. Exhibitor(zookeeper监控工具)

    具体看github上的文档,很详细https://github.com/soabase/exhibitor/wiki/Running-Exhibitor 一. 这个是Netflix出品的一个监控工具, ...

  4. rewrite or internal redirection cycle while processing "/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/jenkins/

    折腾了很久,跟nginx配置没有关系.最终是把php版本从7.1降到5.6才解决的,是跟tp3.2匹配的

  5. jsoup做http接口测试

    本文转载张飞的博客http://www.cnblogs.com/zhangfei/p/4359408.html在此感谢博主的分享! 最早用Jsoup是有一个小的爬虫应用要写,发现Jsoup较HttpC ...

  6. Hadoop 编写WordCount

    本文发表于本人博客. 前面几次讲了关于Hadoop的环境搭建.HDFS操作,今天接着继续.本来Hadoop源码中就有一个例子WordCount,但是今天我们来自己实现一个加深对这个Mapper.Red ...

  7. 日志处理(二) 日志组件logback的介绍及配置使用方法(转)

    本文转自:http://www.cnblogs.com/yuanermen/archive/2012/02/13/2348942.html http://www.cnblogs.com/yuanerm ...

  8. python中 @property

    考察 Student 类: class Student(object): def __init__(self, name, score): self.name = name self.score = ...

  9. 20145221 《Java程序设计》实验报告三:敏捷开发与XP实践

    20145221 <Java程序设计>实验报告三:敏捷开发与XP实践 实验要求 以结对编程的方式编写一个软件,Blog中要给出结对同学的Blog网址 记录TDD和重构的过程,测试代码不要少 ...

  10. HBuilder 获取通讯录

    代码: var content=""; function getCallLog() { try{ plus.contacts.getAddressBook(plus.contact ...