爬取的内容:书籍名称,作者名称,书籍简介,全书网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框架爬取全书网书籍信息。的更多相关文章

  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. Grammar01 语法七要素之一_词类

    1 词类 1.1 词类表格 实词 名词 -> n. -> noun -> 给所有人和物命名的词. 动词 -> v. (vt. vi.) -> verb ( transit ...

  2. .net桌面程序或者控制台程序使用NLog时的注意事项

    Nuget添加NLog 添加nlog.config文件,并选择属性->始终复制 不选择始终复制,编译后nlog.config是没有的. 具体使用: private static readonly ...

  3. NancyFx And ReactiveX

    http://reactivex.io/ https://github.com/dotnet/reactive http://nancyfx.org/ NancyFX Nancy快速上手 (使用Nan ...

  4. Centos6 系统下源码方式安装Mysql 记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配. #### ...

  5. git pull时的冲突解决方式; git stash; git fetch

    git fetch指令: https://www.yiibai.com/git/git_pull.html 发现远端有更新,git pull时,如果你本地分支修改了东西,导致git pull有冲突,失 ...

  6. beanshell 通过java写数据到文件

    import java.io.*; String filePath = "/data/account.txt"; String conent = vars.get("ac ...

  7. SpringBoot配置多数据源Mysql+Sqlite

    ​ 配置了一下druid的多数据源配置,尝试了很多方法,Spring boot关于对Mysql和Sqlite多数据源的配置,记录下来: 涉及技术点: Springboot + Druid + Mysq ...

  8. Java 的 WebSocket

    1. WebSocket 是什么 一言以蔽之,WebSocket允许服务器「主动」给浏览器发消息,如教程演示截图,服务器会主动推送比特币价格给浏览器. 2. 为什么要用 WebSocket 实时获取服 ...

  9. RabbitMQ Policy的使用

    RabbitMQ作为最流行的MQ中间件之一,广泛使用在各类系统中,今天我们就来讨论一下如何通过Policies给RabbitMQ中已经创建的Queue添加属性和参数. Policise 的作用 通常来 ...

  10. C# 8.0 中开启默认接口实现

    原文:C# 8.0 中开启默认接口实现 当你升级到 C# 8.0 和 .NET Core 3.0 之后,你就可以开始使用默认接口实现的功能了. 从现在开始,你可以在接口里面添加一些默认实现的成员,避免 ...