爬取的内容:书籍名称,作者名称,书籍简介,全书网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. 转载: 我如何使用 Django + Vue.js 快速构建项目

    原文链接: https://www.ctolib.com/topics-109796.html 正文引用如下 引言 大U的技术课堂 的新年第一课,祝大家新的一年好好学习,天天向上:) 本篇将手把手教你 ...

  2. C#.NET XML 与 实体 MODEL 互转,非序列化

    只能处理简单结构XML 和 实体. using System.Text; using System.Xml; namespace A.Util { public static class MyXmlU ...

  3. ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)

    验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginCont ...

  4. python中空列表判断方法总结,欢迎补充

    --代码-- if __name__ == '__main__': l = [] print(l.__len__() == 0) print(l.__sizeof__() == 40) print(l ...

  5. windows SDK中的wininet写http客户端

    BOOL InternetSetOption( _In_  HINTERNET hInternet, _In_  DWORD dwOption, _In_  LPVOID lpBuffer, _In_ ...

  6. Centos 7搭建Gitlab服务器超详细

    一. 安装并配置必要的依赖关系在CentOS系统上安装所需的依赖:ssh,防火墙,postfix(用于邮件通知) ,wget,以下这些命令也会打开系统防火墙中的HTTP和SSH端口访问. 1.安装ss ...

  7. Orika的使用姿势,Orika java bean copy 框架

    ### 这个java bean copy 比较好用 https://www.jianshu.com/p/271cf6976a3d

  8. SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)

     下面将在用户和账户进行一对一查询的基础上进行介绍SpringBoot集成Mybatis实现多表查询的基于xml的两种方式.   首先我们先创建两个数据库表,分别是user用户表和account账户表 ...

  9. Aspx后台遍历控件

    aspx设计页面 //这个是检测按钮,检测下面的checkbox是否被选中.选中时打印其值 //https://www.cnblogs.com/pwblog/articles/3456385.html ...

  10. MySQl数据库面试题

    1. MySQL中索引什么作用? 索引的定义和创建的目的 1) 索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息 2) 索引的分类:主键索引,唯一索引,常规 ...