爬取的内容:书籍名称,作者名称,书籍简介,全书网5041页,写入mysql数据库和.txt文件

1,创建scrapy项目

  1. scrapy startproject numberone

2,创建爬虫主程序

  1. cd numberone
  2.  
  3. scrapy genspider quanshuwang www.quanshuwang.com

3,setting中设置请求头

  1. USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"

4,item中设置要爬取的字段

  1. class NumberoneItem(scrapy.Item):
  2. # define the fields for your item here like:
  3. # name = scrapy.Field()
  4. book_author = scrapy.Field()
  5. book_name = scrapy.Field()
  6. book_desc = scrapy.Field()

5,quanshuwang.py主程序中写获取数据的主代码

  1. # -*- coding: utf-8 -*-
  2. import scrapy
  3. from numberone.items import NumberoneItem
  4.  
  5. class QiubaiSpider(scrapy.Spider):
  6. name = 'quanshuwang'
  7. # 这句话是定义爬虫爬取的范围,最好注释掉
  8. # allowed_domains = ['www.qiushibaike.com']
  9. # 开始爬取的路由
  10. start_urls = ['http://www.quanshuwang.com/list/0_1.html']
  11. def parse(self, response):
  12. book_list = response.xpath('//ul[@class="seeWell cf"]/li')
  13. for i in book_list:
  14. item = NumberoneItem()
  15. item['book_name'] = i.xpath('./span/a/text()').extract_first()
  16. item['book_author'] = i.xpath('./span/a[2]/text()').extract_first()
  17. item['book_desc'] = i.xpath('./span/em/text()').extract_first()
  18. yield item
  19. next = response.xpath('//a[@class="next"]/@href').extract_first()
  20. if next:
  21. yield scrapy.Request(next, callback=self.parse)

6,pipelines.py管道文件中文件中写持久化保存.txt和mysql。

  1. # -*- coding: utf-8 -*-
  2.  
  3. # Define your item pipelines here
  4. #
  5. # Don't forget to add your pipeline to the ITEM_PIPELINES setting
  6. # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
  7. import pymysql
  8. # 写入文件的类
  9. class NumberonePipeline(object):
  10. f = None
  11. def open_spider(self,spider):
  12. self.f = open('全书网.txt','a+',encoding='utf-8')
  13. def process_item(self, item, spider):
  14. print(item['book_name']+':正在写入文件...')
  15. book_name = item['book_name']
  16. book_author = item['book_author']
  17. book_desc = item['book_desc']
  18. self.f.write('书名:'+book_name+'\n'+'作者:'+book_author+'\n'+'书籍简介:'+book_desc+'\n\n')
  19. return item
  20. def close_spider(self,spider):
  21. self.f.close()
  22. # 写入数据库的类
  23. class MysqlPipeline(object):
  24. conn = None
  25. mycursor = None
  26. def open_spider(self,spider):
  27. self.conn = pymysql.connect(host='172.16.25.4',user='root',password='root',db='quanshuwang')
  28. self.mycursor = self.conn.cursor()
  29. def process_item(self, item, spider):
  30. print(item['book_name'] + ':正在写数据库...')
  31. book_name = item['book_name']
  32. book_author = item['book_author']
  33. book_desc = item['book_desc']
  34. self.mycursor = self.conn.cursor()
  35. sql = 'insert into qsw VALUES (null,"%s","%s","%s")'%(book_name,book_author,book_desc)
  36. bool = self.mycursor.execute(sql)
  37. self.conn.commit()
  38. return item
  39. def close_spider(self,spider):
  40. self.conn.close()
  41. self.mycursor.close()

7,setting.py文件中打开管道文件。

  1. ITEM_PIPELINES = {
  2. 'numberone.pipelines.NumberonePipeline': 300,
  3. 'numberone.pipelines.MysqlPipeline': 400,
  4.  
  5. }

8,执行运行爬虫的命令

  1. scrapy crawl quanshuwang --nolog

9,控制台输出

  1. 贵府嫡女:正在写数据库...
  2. 随身空间农女翻身记:正在写入文件...
  3. 随身空间农女翻身记:正在写数据库...
  4. 阴间商人:正在写入文件...
  5. 阴间商人:正在写数据库...
  6. 我的美味有属性:正在写入文件...
  7. 我的美味有属性:正在写数据库...
  8. 剑仙修炼纪要:正在写入文件...
  9. 剑仙修炼纪要:正在写数据库...
  10. 在阴间上班的日子:正在写入文件...
  11. 在阴间上班的日子:正在写数据库...
  12. 轮回之鸿蒙传说:正在写入文件...
  13. 轮回之鸿蒙传说:正在写数据库...
  14. 末日星城:正在写入文件...
  15. 末日星城:正在写数据库...
  16. 异域神州道:正在写入文件...
  17. 异域神州道:正在写数据库...

10,打开文件和数据库查看是否写入成功

done。

使用scrapy框架爬取全书网书籍信息。的更多相关文章

  1. 爬虫入门(四)——Scrapy框架入门:使用Scrapy框架爬取全书网小说数据

    为了入门scrapy框架,昨天写了一个爬取静态小说网站的小程序 下面我们尝试爬取全书网中网游动漫类小说的书籍信息. 一.准备阶段 明确一下爬虫页面分析的思路: 对于书籍列表页:我们需要知道打开单本书籍 ...

  2. 使用scrapy框架爬取自己的博文(2)

    之前写了一篇用scrapy框架爬取自己博文的博客,后来发现对于中文的处理一直有问题- - 显示的时候 [u'python\u4e0b\u722c\u67d0\u4e2a\u7f51\u9875\u76 ...

  3. Python爬虫爬取全书网小说,程序源码+程序详细分析

    Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...

  4. Node.js爬虫-爬取慕课网课程信息

    第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行 这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让 ...

  5. Python爬虫项目--爬取自如网房源信息

    本次爬取自如网房源信息所用到的知识点: 1. requests get请求 2. lxml解析html 3. Xpath 4. MongoDB存储 正文 1.分析目标站点 1. url: http:/ ...

  6. scrapy框架爬取笔趣阁完整版

    继续上一篇,这一次的爬取了小说内容 pipelines.py import csv class ScrapytestPipeline(object): # 爬虫文件中提取数据的方法每yield一次it ...

  7. scrapy框架爬取笔趣阁

    笔趣阁是很好爬的网站了,这里简单爬取了全部小说链接和每本的全部章节链接,还想爬取章节内容在biquge.py里在加一个爬取循环,在pipelines.py添加保存函数即可 1 创建一个scrapy项目 ...

  8. scrapy框架爬取豆瓣读书(1)

    1.scrapy框架 Scrapy,Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试 ...

  9. python利用scrapy框架爬取起点

    先上自己做完之后回顾细节和思路的东西,之后代码一起上. 1.Mongodb 建立一个叫QiDian的库,然后建立了一个叫Novelclass(小说类别表)Novelclass(可以把一级类别二级类别都 ...

随机推荐

  1. All LeetCode Questions List 题目汇总

    All LeetCode Questions List(Part of Answers, still updating) 题目汇总及部分答案(持续更新中) Leetcode problems clas ...

  2. 【JavaScript】从 this 指向到 reference 类型

    判断"this 指向谁"是个老大难的问题. 网络上有许多文章教我们如何判别,但大多艰涩复杂,难以理解. 那么这里介绍一个非常简单实用的判别规则: 1)在函数[调用]时," ...

  3. Delphi TButton.OnClick 匿名函数用法

    type TNotifyEventRef = reference to procedure(Sender: TObject); function AnonymousEvent(const Proc: ...

  4. c# EF插入数据报错跟踪代码

    我们在使用EF进行数据库插入的时候或出现一些插入失败的情况,但是具体是哪个字段不符合数据库设计要求无法得知,普通的try catch 无法捕获加上一下方法就可以 try            {    ...

  5. JavaWeb项目之多条件过滤

    相信很多同学在学习java基础之后,面对各种项目还是相当头疼,那今天我将手把手教你学会JavaWeb项目中的多条件过滤,希望你能在与我实战的过程中积累经验,更进一步. 分页查询 需求分析:在列表页面中 ...

  6. sublime_python编译_输出台中文为乱码

    Evernote Export sublime_python编译_输出台中文为乱码 创建时间: 2019-10-17 星期四 10:52 作者: 苏苏 标签: sublime, 乱码       问题 ...

  7. Docker之数据卷(Data Volumes)操作

    目的: 前言 Docker宿主机和容器之间文件拷贝 数据卷 数据卷容器 前言 Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享, ...

  8. -透明度中百分比与十六进制的对应关系 MD

    目录 目录 透明度中百分比与十六进制的对应关系 计算代码 对应关系表 Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao ...

  9. java之mybatis之helloworld

    1. MyBatis 是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架. MyBatis几乎消除了所有的 JDBC 代码,也基本不需要手工去设置参数和获取检索结果. MyBatis几乎能够 ...

  10. 2019 欢聚时代java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.欢聚时代等公司offer,岗位是Java后端开发,因为发展原因最终选择去了 欢聚时代,入职一年时间了,也成为了 ...