一、安装

首先scrapy的安装之前需要安装这个模块:wheel、lxml、Twisted、pywin32,最后在安装scrapy

pip install wheel
pip install lxml
这个地址是一个下载python包的好地方
https://www.lfd.uci.edu/~gohlke/pythonlibs/下载twisted
pip install Twisted
pip install pywin32
pip install scrapy 安装完成后
输入scrapy 能够执行,并能提示版本,说明安装没问题

二、Scrapy项目的创建 (获取武林中文网)https://m.50zw.la/

1、在前面输入 scrapy 的时候有个选项是 startproject,这个选项是创建scrapy项目,我们在命令提示符中输入:

scrapy startproject wlzw (wlzw)

2、生成基础爬虫文件

cd wlzw

scrapy genspider spiderwlzw m.50zw.la 前一个是py文件名名后一个是要爬取的url

生成一个名为spiderwlzw.py文件

3、打开pycharm-->file-->open 找到建好的项目,显示项目结构

init.py 保持默认,不修改

items.py 保存爬取到的数据的容器

middlewares.py 中间件配置文件

settings.py 项目的设置文件,延迟等。

pipelines.py 项目管道文件,对传入的项目类中的数据进行一个清理和入库

spiders目录 该目录下 有一个init.py 文件,和第2步生成spiderwlzw.py文件

三、设计数据库

1、确认保存什么数据

数据库为:novel

表名

Novel

字段名

title 圣墟

author 作者:辰东

type 类别:玄幻小说

status 状态:连载中

update_last 更新:2019-07-05 14:35:32

update_last_status 最新:第1407章 女帝君临世间!

brief_introduction 小说简介

2、创建数据库和表

1)、pycharm下方的Terminal输入

python

    import sqlite3
novel=sqlite3.connect("novel.sqlite")
createtablesql="create table novel(title varchar(100),author varchar(50),type varchar(50),status varchar(50),update_last varchar(50),update_last_status varchar(100),brief_introduction varchar(500))"
novel.execute(createtablesql);
2)、完成创建数据库和表
3)、按住这个文件拖动到右侧的Database中

四、修改代码

1、根据第三步定义的数据库表结构修改items.py代码

import scrapy

class WlzwItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
title = scrapy.Field()
author = scrapy.Field()
type = scrapy.Field()
status = scrapy.Field()
update_last = scrapy.Field()
update_last_status = scrapy.Field()
brief_introduction = scrapy.Field()
pass 2、修改spiderwlzw.py文件
主要为三部分
本页内的小说连接
本页内的下一页连接
打开每篇小说后的采集具体的数据 import scrapy
from wlzw.items import *
#武林中文网 class SpiderwlzwSpider(scrapy.Spider):
name = 'wlzw' #这里要和项目名称保持一致
allowed_domains = ['m.50zw.la']
start_urls = ['http://m.50zw.la/wapsort/1_1.html'] #这里只处理玄幻类小说 #主站链接 用来拼接
base_site = 'http://m.50zw.la' def parse(self, response):
book_urls = response.xpath('//table[@class="list-item"]//a/@href').extract()
print(book_urls)
for book_url in book_urls:
url = self.base_site + book_url
yield scrapy.Request(url, callback=self.getInfo) #获取下一页
next_page_url = self.base_site + response.xpath('//table[@class="page-book"]//a[contains(text(),"下一页")]/@href').extract()[0]
yield scrapy.Request(next_page_url, callback=self.parse) def getInfo(self, response):
item = WlzwItem() #提取信息
item['text_id'] = response.url.split('_')[1].replace('/', '')
item['title'] = response.xpath('//table[1]//p/strong/text()').extract()[0]
item['author'] = response.xpath('//table[1]//p/a/text()').extract()[0]
item['type'] = response.xpath('//table[1]//p/a/text()').extract()[1]
item['status'] = response.xpath('//table[1]//p/text()').extract()[2][3:]
item['update_last'] = response.xpath('//table[1]//p[5]/text()').extract()[0][3:]
item['update_last_status'] = response.xpath('//table[1]//p[6]/a/text()').extract()[0][3:]
item['brief_introduction'] = response.xpath('//div[@class="intro"]/text()').extract()[0] yield item
3、修改pipeline.py
import sqlite3 class WlzwPipeline(object):
def open_spider(self, spider):
self.con = sqlite3.connect("novel.sqlite")
self.cn = self.con.cursor() def process_item(self, item, spider):
print(item)
insert_sql = 'insert into novel(title ,author,type,status,update_last,update_last_status,brief_introduction) values("{}", "{}", "{}", "{}", "{}", "{}", "{}")'.format(item["title"], item["author"], item["type"], item["status"], item["update_last"], item["update_last_status"], item["brief_introduction"])
print(insert_sql)
self.cn.execute(insert_sql)
self.con.commit()
return item def spider_close(self, spider):
self.con.close() 4、修改setting.py
ITEM_PIPELINES = {
'wlzw.pipelines.WlzwPipeline': 300,
}

五、执行爬虫 (项目目录下执行)退到与工程同一目录下:

scrapy crawl wlzw

使用scrapy框架做武林中文网的爬虫的更多相关文章

  1. 使用scrapy框架做赶集网爬虫

    使用scrapy框架做赶集网爬虫 一.安装 首先scrapy的安装之前需要安装这个模块:wheel.lxml.Twisted.pywin32,最后在安装scrapy pip install wheel ...

  2. Python 爬虫之Scrapy框架

    Scrapy框架架构 Scrapy框架介绍: 写一个爬虫,需要做很多的事情.比如:发送网络请求.数据解析.数据存储.反反爬虫机制(更换ip代理.设置请求头等).异步请求等.这些工作如果每次都要自己从零 ...

  3. Python逆向爬虫之scrapy框架,非常详细

    爬虫系列目录 目录 Python逆向爬虫之scrapy框架,非常详细 一.爬虫入门 1.1 定义需求 1.2 需求分析 1.2.1 下载某个页面上所有的图片 1.2.2 分页 1.2.3 进行下载图片 ...

  4. Scrapy框架——CrawlSpider类爬虫案例

    Scrapy--CrawlSpider Scrapy框架中分两类爬虫,Spider类和CrawlSpider类. 此案例采用的是CrawlSpider类实现爬虫. 它是Spider的派生类,Spide ...

  5. 基于Scrapy框架的Python新闻爬虫

    概述 该项目是基于Scrapy框架的Python新闻爬虫,能够爬取网易,搜狐,凤凰和澎湃网站上的新闻,将标题,内容,评论,时间等内容整理并保存到本地 详细 代码下载:http://www.demoda ...

  6. Python爬虫进阶之Scrapy框架安装配置

    Python爬虫进阶之Scrapy框架安装配置 初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此 ...

  7. scrapy框架的命令行解释

    scrapy框架的命令解释 创建爬虫项目 scrapy startproject 项目名例子如下: scrapy startproject test1 这个时候爬虫的目录结构就已经创建完成了,目录结构 ...

  8. Scrapy框架——CrawlSpider爬取某招聘信息网站

    CrawlSpider Scrapy框架中分两类爬虫,Spider类和CrawlSpider类. 它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页, 而Craw ...

  9. Python爬虫Scrapy框架入门(2)

    本文是跟着大神博客,尝试从网站上爬一堆东西,一堆你懂得的东西 附上原创链接: http://www.cnblogs.com/qiyeboy/p/5428240.html 基本思路是,查看网页元素,填写 ...

随机推荐

  1. AI:WEB:1 Walkthrough

    AI: Web: 1 Vulnhub Walkthrough靶机下载:https://www.vulnhub.com/entry/ai-web-1,353/测试方法:    Nmap网络扫描    浏 ...

  2. JavaWeb 使用Session实现一次性验证码

    表单 <form action="loginServlet" method="post"> 请输入验证码:<input type=" ...

  3. unity 2d碰撞/ui组件碰撞

    首先,ugui的碰撞是可以用Collision2D跟Rigidbody2D实现的(就跟3D碰撞一样).之前试过不可以主要问题正在于Collision2D以及Rigidbody的设置上. 碰撞双方都添加 ...

  4. Kaldi语音识别快速入门

    一.简介 Kaldi是使用C++编写的语音识别工具包,Apache License v2.0许可.主要供语音识别研究人员使用.Kaldi的目标和范围与HTK类似.目标是拥有易于修改和扩展的现代而灵活的 ...

  5. Zabbix 添加内存告警

    1.在Template OS Linux模板创建item Configuration-->Templates-->Template OS Linux-->items-->cre ...

  6. Linux用户权限管理

    Linux操作系统: 多用户多任务的操作系统 用户类型分为:     管理员用户 : root     普通用户分为:系统用户/程序用户 用户相关的文件:     /etc/passwd      用 ...

  7. 使用Qemu运行Ubuntu文件系统 —— 搭建SVE学习环境(2)

    开发环境 PC:ubuntu18.04 Qemu:4.1 Kernel:Linux-5.2 概述 由于要学习ARM的SVE技术,但是目前还没有支持SVE指令的板子,所以只能用Qemu来模拟,但是发现Q ...

  8. 系统管理员必须知道的PHP安全实践

    Apache web 服务器提供了这种便利 :通过 HTTP 或 HTTPS 协议,访问文件和内容.配置不当的服务器端脚本语言会带来各种各样的问题.所以,使用 PHP 时要小心.以下是 25 个 PH ...

  9. 【IOS】libimobiledevice常用命令

    libimobiledevice 是一个跨平台的软件库,支持 iPhone®, iPod Touch®, iPad® and Apple TV® 等设备的通讯协议.   安装 命令: brew ins ...

  10. centos7静黙安装Oracle11.2.0软件响应文件oracle_install.rsp

    oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 oracle.i ...