Scrapy抓取起点中文网排行榜

项目名称:qidian

项目描述:利用scrapy抓取七点中文网的“完本榜”总榜的500本小说,抓取内容包括:小说名称,作者,类别,然后保存为CSV文件

目标URL:https://www.qidian.com/rank/fin?style=1

项目需求:

  1.小说名称

  2.作者

  3.小说类别

第一步:在shell中创建项目

scrapy startproject qidian

第二步:根据项目需求编辑items.py

1 #-*- coding: utf-8 -*-
2 import scrapy
3
4 class QidianItem(scrapy.Item):
5     name = scrapy.Field()
6     author = scrapy.Field()
7     category = scrapy.Field()

第三步:进行页面分析,利用xpath或者css提取数据,创建并编辑spider.py

 1 # -*- coding: utf-8 -*-
 2 import scrapy
 3 from ..items import QidianItem
 4
 5 class QidianSpider(scrapy.Spider):
 6     name = ‘qidian‘
 7     start_urls = [‘https://www.qidian.com/rank/fin?style=1&dateType=3‘]
 8
 9     def parse(self, response):
10         sel = response.xpath(‘//div[@class="book-mid-info"]‘)
11         for i in sel:
12             name = i.xpath(‘./h4/a/text()‘).extract_first()
13             author = i.xpath(‘./p[@class="author"]/a[1]/text()‘).extract_first()
14             category = i.xpath(‘./p[@class="author"]/a[last()]/text()‘).extract_first()
15             item = QidianItem()
16             item[‘name‘] = name
17             item[‘author‘] = author
18             item[‘category‘] = category
19             yield item

  上面这里是一页的数据,接下来抓取一下页的连接(因为项目过于小巧,我认为没必要用到一些高大上的方法来实现,直接观察URL的构造规律就可以简单写出代码),下面是spider.py的完整代码

 1 # -*- coding: utf-8 -*-
 2 import scrapy
 3 from ..items import QidianItem
 4
 5 class QidianSpider(scrapy.Spider):
 6     name = ‘qidian‘
 7     start_urls = [‘https://www.qidian.com/rank/fin?style=1&dateType=3‘]
 8     n = 1 #第一页
 9
10     def parse(self, response):
11         sel = response.xpath(‘//div[@class="book-mid-info"]‘)
12         for i in sel:
13             name = i.xpath(‘./h4/a/text()‘).extract_first()
14             author = i.xpath(‘./p[@class="author"]/a[1]/text()‘).extract_first()
15             category = i.xpath(‘./p[@class="author"]/a[last()]/text()‘).extract_first()
16             item = QidianItem()
17             item[‘name‘] = name
18             item[‘author‘] = author
19             item[‘category‘] = category
20             yield item21
22         if self.n < 25:
23             self.n += 1 #n表示页码
24             next_url = ‘https://www.qidian.com/rank/fin?style=1&dateType=3&page=%d‘ % self.n
25             yield scrapy.Request(next_url, callback = parse)

第四步:启动爬虫并保存数据

scrapy crawl qidian -o qidian.csv

  

原文地址:https://www.cnblogs.com/Alfred-ou/p/9326296.html

时间: 2024-08-27 21:28:58

Scrapy抓取起点中文网排行榜的相关文章

scrapy抓取的页面中文会变成unicode字符串

不了解编码的,需要先补下:http://www.cnblogs.com/jiangtu/p/6245264.html 现象:从scrapy抓取的页面中文会变成unicode字符串,如下图 2017-03-28 23:00:12 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.lagou.com/jobs/2617468.html> {'describe': [u'<div>\n <p>\u5c97\u

分布式爬虫:使用Scrapy抓取数据

分布式爬虫:使用Scrapy抓取数据 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. 官方主页: http://www.scrapy.org/ 中文文档:Scrapy 0.22 文档 GitHub项目主页:https://github.com/scrapy/scrapy Scrapy 使用了 Twisted 异步网络库来处理网络通讯.整体架构大致如下(注:图片来自

通过Scrapy抓取QQ空间

毕业设计题目就是用Scrapy抓取QQ空间的数据,最近毕业设计弄完了,来总结以下: 首先是模拟登录的问题: 由于Tencent对模拟登录比较讨厌,各个防备,而本人能力有限,所以做的最简单的,手动登录后,获得Cookie信息,然后携带访问. 其次是数据接口: 通过对QQ空间的网页分析,数据主要是通过Json的形式返回.选择了两个数据接口进行数据抓取 每个QQ的详细信息接口: "http://user.qzone.qq.com/p/base.s8/cgi-bin/user/cgi_userinfo_

scrapy抓取拉勾网职位信息(一)——scrapy初识及lagou爬虫项目建立

本次以scrapy抓取拉勾网职位信息作为scrapy学习的一个实战演练 python版本:3.7.1 框架:scrapy(pip直接安装可能会报错,如果是vc++环境不满足,建议直接安装一个visual studio一劳永逸,如果报错缺少前置依赖,就先安装依赖) 本篇主要对scrapy生成爬虫项目做一个基本的介绍 tips:在任意目录打开cmd的方式可以使用下面这两种方式 shift + 右键打开cmd(window10的powershell你可以简单理解为cmd升级版) 在路径框直接输入cmd

爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中

爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中 准备使用的环境和库Python3.6 + requests + bs4 + csv + multiprocessing 库的说明 requests模拟计算机对服务器发送requests请求 bs4:页面分析功能,分析页面找到所需要的特定内容 xlwt:把爬取的内容存入csv文件中 multiprocessing:开启多进程爬取 1.准备URLs 起点中文网 起点中文网的URL:https://w

scrapy抓取某些网站出现AttributeError_ object has no attribute 的解决办法的代码.txt

把写内容过程中经常用的内容段备份一下,下面的内容内容是关于scrapy抓取某些网站出现AttributeError: 'Response' object has no attribute 'body_as_unicode'的解决办法的内容,应该是对码农们也有用. def parse(self, response): hxs=Selector(response) for url in detail_url_list: if 'goods' in url: yield Request(url, ca

【1.1】Scrapy抓取4步走、新建项目

Scrapy抓取4步走 新建项目 明确目标 制作爬虫 存储内容 scrapy startproject 项目名 scrapy genspider 文件名 域名 scrapy.cfg 原文地址:https://www.cnblogs.com/zydeboke/p/11619751.html

scrapy抓取学院新闻报告

抓取四川大学公共管理学院官网(http://ggglxy.scu.edu.cn)所有的新闻咨询. 实验流程 1.确定抓取目标.2.制定抓取规则.3.'编写/调试'抓取规则.4.获得抓取数据 1.确定抓取目标 我们这次需要抓取的目标为四川大学公共管理学院的所有新闻资讯.于是我们需要知道公管学院官网的布局结构. 微信截图_20170515223045.png 这里我们发现想要抓到全部的新闻信息,不能直接在官网首页进行抓取,需要点击"more"进入到新闻总栏目里面. Paste_Image.

爬虫scrapy抓取w3school课程列表

首先还是先创建scrapy项目,当然这都是在你安装scrapy之后啊,这个scrapy还是在linux系统下最省事,一行指令瞬间安装,这酸爽..... 言归正传啊,创建scrapy文件. <span style="font-size:14px;">scrapy startproject w3school</span> 之后可以查看一下,这个文件的结构,上一次抓取天气的时候还记得吗,我们采用的是tree命令. <span style="font-s