使用scrapy框架爬取全书网书籍信息。
爬取的内容:书籍名称,作者名称,书籍简介,全书网5041页,写入mysql数据库和.txt文件
1,创建scrapy项目
- scrapy startproject numberone
2,创建爬虫主程序
- cd numberone
- scrapy genspider quanshuwang www.quanshuwang.com
3,setting中设置请求头
- 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中设置要爬取的字段
- class NumberoneItem(scrapy.Item):
- # define the fields for your item here like:
- # name = scrapy.Field()
- book_author = scrapy.Field()
- book_name = scrapy.Field()
- book_desc = scrapy.Field()
5,quanshuwang.py主程序中写获取数据的主代码
- # -*- coding: utf-8 -*-
- import scrapy
- from numberone.items import NumberoneItem
- class QiubaiSpider(scrapy.Spider):
- name = 'quanshuwang'
- # 这句话是定义爬虫爬取的范围,最好注释掉
- # allowed_domains = ['www.qiushibaike.com']
- # 开始爬取的路由
- start_urls = ['http://www.quanshuwang.com/list/0_1.html']
- def parse(self, response):
- book_list = response.xpath('//ul[@class="seeWell cf"]/li')
- for i in book_list:
- item = NumberoneItem()
- item['book_name'] = i.xpath('./span/a/text()').extract_first()
- item['book_author'] = i.xpath('./span/a[2]/text()').extract_first()
- item['book_desc'] = i.xpath('./span/em/text()').extract_first()
- yield item
- next = response.xpath('//a[@class="next"]/@href').extract_first()
- if next:
- yield scrapy.Request(next, callback=self.parse)
6,pipelines.py管道文件中文件中写持久化保存.txt和mysql。
- # -*- coding: utf-8 -*-
- # Define your item pipelines here
- #
- # Don't forget to add your pipeline to the ITEM_PIPELINES setting
- # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
- import pymysql
- # 写入文件的类
- class NumberonePipeline(object):
- f = None
- def open_spider(self,spider):
- self.f = open('全书网.txt','a+',encoding='utf-8')
- def process_item(self, item, spider):
- print(item['book_name']+':正在写入文件...')
- book_name = item['book_name']
- book_author = item['book_author']
- book_desc = item['book_desc']
- self.f.write('书名:'+book_name+'\n'+'作者:'+book_author+'\n'+'书籍简介:'+book_desc+'\n\n')
- return item
- def close_spider(self,spider):
- self.f.close()
- # 写入数据库的类
- class MysqlPipeline(object):
- conn = None
- mycursor = None
- def open_spider(self,spider):
- self.conn = pymysql.connect(host='172.16.25.4',user='root',password='root',db='quanshuwang')
- self.mycursor = self.conn.cursor()
- def process_item(self, item, spider):
- print(item['book_name'] + ':正在写数据库...')
- book_name = item['book_name']
- book_author = item['book_author']
- book_desc = item['book_desc']
- self.mycursor = self.conn.cursor()
- sql = 'insert into qsw VALUES (null,"%s","%s","%s")'%(book_name,book_author,book_desc)
- bool = self.mycursor.execute(sql)
- self.conn.commit()
- return item
- def close_spider(self,spider):
- self.conn.close()
- self.mycursor.close()
7,setting.py文件中打开管道文件。
- ITEM_PIPELINES = {
- 'numberone.pipelines.NumberonePipeline': 300,
- 'numberone.pipelines.MysqlPipeline': 400,
- }
8,执行运行爬虫的命令
- scrapy crawl quanshuwang --nolog
9,控制台输出
- 贵府嫡女:正在写数据库...
- 随身空间农女翻身记:正在写入文件...
- 随身空间农女翻身记:正在写数据库...
- 阴间商人:正在写入文件...
- 阴间商人:正在写数据库...
- 我的美味有属性:正在写入文件...
- 我的美味有属性:正在写数据库...
- 剑仙修炼纪要:正在写入文件...
- 剑仙修炼纪要:正在写数据库...
- 在阴间上班的日子:正在写入文件...
- 在阴间上班的日子:正在写数据库...
- 轮回之鸿蒙传说:正在写入文件...
- 轮回之鸿蒙传说:正在写数据库...
- 末日星城:正在写入文件...
- 末日星城:正在写数据库...
- 异域神州道:正在写入文件...
- 异域神州道:正在写数据库...
10,打开文件和数据库查看是否写入成功
done。
使用scrapy框架爬取全书网书籍信息。的更多相关文章
- 爬虫入门(四)——Scrapy框架入门:使用Scrapy框架爬取全书网小说数据
为了入门scrapy框架,昨天写了一个爬取静态小说网站的小程序 下面我们尝试爬取全书网中网游动漫类小说的书籍信息. 一.准备阶段 明确一下爬虫页面分析的思路: 对于书籍列表页:我们需要知道打开单本书籍 ...
- 使用scrapy框架爬取自己的博文(2)
之前写了一篇用scrapy框架爬取自己博文的博客,后来发现对于中文的处理一直有问题- - 显示的时候 [u'python\u4e0b\u722c\u67d0\u4e2a\u7f51\u9875\u76 ...
- Python爬虫爬取全书网小说,程序源码+程序详细分析
Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...
- Node.js爬虫-爬取慕课网课程信息
第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行 这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让 ...
- Python爬虫项目--爬取自如网房源信息
本次爬取自如网房源信息所用到的知识点: 1. requests get请求 2. lxml解析html 3. Xpath 4. MongoDB存储 正文 1.分析目标站点 1. url: http:/ ...
- scrapy框架爬取笔趣阁完整版
继续上一篇,这一次的爬取了小说内容 pipelines.py import csv class ScrapytestPipeline(object): # 爬虫文件中提取数据的方法每yield一次it ...
- scrapy框架爬取笔趣阁
笔趣阁是很好爬的网站了,这里简单爬取了全部小说链接和每本的全部章节链接,还想爬取章节内容在biquge.py里在加一个爬取循环,在pipelines.py添加保存函数即可 1 创建一个scrapy项目 ...
- scrapy框架爬取豆瓣读书(1)
1.scrapy框架 Scrapy,Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试 ...
- python利用scrapy框架爬取起点
先上自己做完之后回顾细节和思路的东西,之后代码一起上. 1.Mongodb 建立一个叫QiDian的库,然后建立了一个叫Novelclass(小说类别表)Novelclass(可以把一级类别二级类别都 ...
随机推荐
- All LeetCode Questions List 题目汇总
All LeetCode Questions List(Part of Answers, still updating) 题目汇总及部分答案(持续更新中) Leetcode problems clas ...
- 【JavaScript】从 this 指向到 reference 类型
判断"this 指向谁"是个老大难的问题. 网络上有许多文章教我们如何判别,但大多艰涩复杂,难以理解. 那么这里介绍一个非常简单实用的判别规则: 1)在函数[调用]时," ...
- Delphi TButton.OnClick 匿名函数用法
type TNotifyEventRef = reference to procedure(Sender: TObject); function AnonymousEvent(const Proc: ...
- c# EF插入数据报错跟踪代码
我们在使用EF进行数据库插入的时候或出现一些插入失败的情况,但是具体是哪个字段不符合数据库设计要求无法得知,普通的try catch 无法捕获加上一下方法就可以 try { ...
- JavaWeb项目之多条件过滤
相信很多同学在学习java基础之后,面对各种项目还是相当头疼,那今天我将手把手教你学会JavaWeb项目中的多条件过滤,希望你能在与我实战的过程中积累经验,更进一步. 分页查询 需求分析:在列表页面中 ...
- sublime_python编译_输出台中文为乱码
Evernote Export sublime_python编译_输出台中文为乱码 创建时间: 2019-10-17 星期四 10:52 作者: 苏苏 标签: sublime, 乱码 问题 ...
- Docker之数据卷(Data Volumes)操作
目的: 前言 Docker宿主机和容器之间文件拷贝 数据卷 数据卷容器 前言 Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享, ...
- -透明度中百分比与十六进制的对应关系 MD
目录 目录 透明度中百分比与十六进制的对应关系 计算代码 对应关系表 Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao ...
- java之mybatis之helloworld
1. MyBatis 是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架. MyBatis几乎消除了所有的 JDBC 代码,也基本不需要手工去设置参数和获取检索结果. MyBatis几乎能够 ...
- 2019 欢聚时代java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.欢聚时代等公司offer,岗位是Java后端开发,因为发展原因最终选择去了 欢聚时代,入职一年时间了,也成为了 ...