一、开发环境

  1.安装 scrapy

  2.安装 python2.7

  3.安装编辑器 PyCharm

二、创建scrapy项目pachong

  1.在命令行输入命令:scrapy startproject  pachong

   (pachong 为项目的名称,可以改变)

     

  2.打开编辑器PyCharm,将刚刚创建的项目pachong导入。

    (点击file—>选择open—>输入或选择E:\pachong—>点击ok)

     

三、创建scrapy爬虫文件pachong_spider.py

  在pachong_spider.py这个文件夹中编写爬取网站数据的内容。

  (右击文件spiders—>选择New,在选择PhthonFile—>输入文件名pachong_spider)

  

四、编写爬虫pachong

  将 网址  http://lab.scrapyd.cn/   博客中的所有博客标题和博客标签,以作者名-语录为名分别保存在各自作者对应的txt文件中。

  1.查看http://lab.scrapyd.cn/源代码,获取自己所需的博客标题、作者、标签三个内容的对应HTML标签信息。

  

  2.获取网址的内容,保存到变量pachong里。

  (分析HTML结构,每一段需要提取的内容都被一个 <div class="quote post">……</div> 包裹。)

  

  3.获取循环获取标题、作者的第一个内容,和对应标签的内容,并对标签的内容进行逗号分隔后,进行分类保存。

  

  4.查看下一页的HTML标签,对下一页获取的内容进行循环。

     (查看存在不存在下一页的链接,如果存在下一页,把下一页的内容提交给parse然后继续爬取。如果不存在下一页链接结束爬取。)

       

     

  5.爬虫源代码。

 # -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
#Python 默认脚本文件都是 UTF-8 编码的,当脚本出现中文汉字时需要对其进行解码。
import scrapy
class itemSpider(scrapy.Spider):
# scrapy.Spider 是一个简单的爬虫类型。
# 它只是提供了一个默认start_requests()实现。
# 它从start_urlsspider属性发送请求,并parse 为每个结果响应调用spider的方法。
name ="pachong"
# 定义此爬虫名称的字符串。
# 它必须是唯一的。
start_urls = ['http://lab.scrapyd.cn']
#爬虫抓取自己需要的网址列表。
#该网站列表可以是多个。
def parse(self, response):
# 定义一个parse规则,用来爬取自己需要的网站信息。
pachong = response.css('div.quote')
# 用变量pachong来保存获取网站的部分内容。
for v in pachong:
text = v.css('.text::text').extract_first()
autor = v.css('.author::text').extract_first()
tags = v.css('.tags .tag::text').extract()
tags = ','.join(tags)
# 循环提取所有的标题、作者和标签内容。
fileName = u'%s-语录.txt' % autor
# 文件的名称为作者名字—语录.txt。
with open(fileName, "a+")as f:
f.write(u'标题:'+text)
f.write('\n')
f.write(u'标签:' + tags)
f.write('\n------------------------------------------------\n')
# 打开文件并写入标题和标签内容。
f.close()
# 关闭文件
next_page = response.css('li.next a::attr(href)').extract_first()
if next_page is not None:
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, callback=self.parse)
# 查看存在不存在下一页的链接,如果存在下一页,把下一页的内容提交给parse然后继续爬取。
# 如果不存在下一页链接结束爬取。

五、运行爬虫pachong

  1.在命令行输入命令:scrapy crawl  pachong

  (在pachong的目录下输入命令)

  

  

  2.打开e盘 pachong文件夹,已经按要求爬取网址  http://lab.scrapyd.cn/ 的内容。

  

Python之Scrapy爬虫框架 入门实例(一)的更多相关文章

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

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

  2. scrapy爬虫框架入门实例(一)

    流程分析 抓取内容(百度贴吧:网络爬虫吧) 页面: http://tieba.baidu.com/f?kw=%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB&ie=ut ...

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

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

  4. [Python] Scrapy爬虫框架入门

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

  5. Scrapy 爬虫框架入门案例详解

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:崔庆才 Scrapy入门 本篇会通过介绍一个简单的项目,走一遍Scrapy抓取流程,通过这个过程,可以对 ...

  6. windows下使用python的scrapy爬虫框架,爬取个人博客文章内容信息

    scrapy作为流行的python爬虫框架,简单易用,这里简单介绍如何使用该爬虫框架爬取个人博客信息.关于python的安装和scrapy的安装配置请读者自行查阅相关资料,或者也可以关注我后续的内容. ...

  7. scrapy爬虫框架入门教程

    scrapy安装请参考:安装指南. 我们将使用开放目录项目(dmoz)作为抓取的例子. 这篇入门教程将引导你完成如下任务: 创建一个新的Scrapy项目 定义提取的Item 写一个Spider用来爬行 ...

  8. Python使用Scrapy爬虫框架全站爬取图片并保存本地(妹子图)

    大家可以在Github上clone全部源码. Github:https://github.com/williamzxl/Scrapy_CrawlMeiziTu Scrapy官方文档:http://sc ...

  9. scrapy爬虫框架入门实战

    博客 https://www.jianshu.com/p/61911e00abd0 项目源码 https://github.com/ppy2790/jianshu/blob/master/jiansh ...

随机推荐

  1. java 三种工厂模式

    一.简单工厂模式 一个栗子: 我喜欢吃面条,抽象一个面条基类,(接口也可以),这是产品的抽象类. public abstract class INoodles { /** * 描述每种面条啥样的 */ ...

  2. 简单的nodejs 文件系统(fs)读写例子。

    在nodejs中,可以通过fs(file system)模块进行文件的I/O操作. API链接地址: http://nodeapi.ucdok.com/#/api/fs.html 下面进行fs文件系统 ...

  3. 利用NPOI将EXCEL转换成HTML的C#实现

    领导说想做一个网页打印功能,而且模板可以自定义,我考虑了三个方案,一是打印插件,二是在线 html 编辑器,三是 excel 模板,领导建议用的是打印插件的形式,我研究了一下,一个是需要下载安装,二个 ...

  4. 【Python】排列组合itertools & 集合set

    ■itertools 利用python的itertools可以轻松地进行排列组合运算 itertools的方法基本上都返回迭代器 比如 •itertools.combinations('abcd',2 ...

  5. CAS简介和无锁队列的实现

    Q:CAS的实现 A:gcc提供了两个函数 bool __sync_bool_compare_and_swap (type *ptr, type oldval, type newval, ...)// ...

  6. Entity Framework——并发策略

    使用EF框架遇到并发时,一般采取乐观并发控制. 1支持并发检验 为支持并发检验,需要对实体进行额外的设置.默认情况下是不支持并发检验的.有以下两种方式: 方式名称 说明 时间戳注解/行版本 使用Tim ...

  7. 2017级C语言教学总结

    一个学期下来,对于这门课教学还是感受挺多,多个教学平台辅助,确实和我前10年的教学方式区别很多,也辛苦很多. 一.课堂教学方面 1.课堂派预习作业 主要借助课堂派平台,每次课前发布预习作业.而预习作业 ...

  8. 关于5303狄惟佳同学的myod程序设计的补充实现

    关于5303狄惟佳同学的myod程序设计的补充实现 原版代码实现的局限 原版代码主函数 int main(int argc,char *argv[]) { if(strcmp(argv[1], &qu ...

  9. verilog学习笔记(4)_有限状态机

    有限状态机: 有限状态机是由寄存器组和组合逻辑构成的硬件时序电路: - 其状态(即由寄存器组的1和0的组合状态所构成的有限个状态)只能在同一时钟跳变沿的情况下才能从一个状态转向另一个状态: - 究竟转 ...

  10. JAVA面向对象的多态性

    什么是多态?简而言之就是相同的行为,不同的实现. 而多态也分为静态多态(重载).动态多态(重写)和动态绑定. 静态动态,实际就是指的重载的概念,是系统在编译时,就能知晓该具体调用哪个方法.动态多态指在 ...