利用scrapy爬取句子迷网站优美句子存储到本地(喜欢摘抄的人有福了!)

  • 1.前言
  • 2.新建scapy工程项目
  • 3.为了方便运行,还是在一级目录下新建main.py文件,代码如下:
  • 4.编写item.py里面的代码如下:
  • 5.编写sentence.py里面的主函数代码:
  • 6.利用CsvItemExporter保存到本地了
  • 7.设置代理中间件。
  • 8.开启运行项目界面截图如下:

1.前言

个人一直有收藏无意间觉得很优美的句子或者台词,我当初玩新浪微博的时候就是因为在微博上看到有的微博一直分享着特别好的台词或者句子。几乎我都抄下来了,虽然字写得不咋地,现在看到好的句子都会复制粘贴存到手机备忘录,有时间就会看,那么我就贴一下我收藏的吧(ps:下面的句子都是本人于茶余饭后,浏览于各大网站,抱着喜欢之心,收藏的,出处不详,如有侵权还望告知)

  1. 毁掉我们的不是我们所憎恨的东西,而恰恰是我们所热爱的东西。
    这群人物不是英雄豪杰,也未必是元凶巨恶。他们的社会地位可能极低,也可能极高。很难说他们是好人还是坏人,但由于他们的存在,很多简单的事情变得混沌、暧昧、肮脏,许多祥和的人际关系变得紧张、尴尬…他们绝不想对什么负责,而且确实也无法让他们负责…
    …你终于愤怒了,聚集起万钧雷霆准备轰击,没想到他们也在一起与你愤怒,你忽然失去了轰击对象…
    …小人是什么? 如果说的清定义,他们也就没这么可恶了…
  2. “凡心所向,素履以往,生如逆旅,一苇以航。”
  3. 层楼终究误少年,自由早晚乱余生。
  4. 血雨腥风成绝响,人间不见白梅香。良人随雪飘零去,生者独守十字伤。----《浪客剑心》 (ps:这我看动漫时看到的,现在读起来还是鸡冻?)
  5. 良言一句三冬暖,恶语伤人六月寒。
  6. .天下熙熙皆为利来,天下攘攘皆为利往。
  7. 此之蜜糖,彼之砒霜。
  8. 亲卿爱卿,是以卿卿,我不卿卿,谁当卿卿。
  9. 我天性不宜交际。在多数场合,我不是觉得对方乏味,就是害怕对方觉得我乏味。可是我既不愿意忍受对方乏味,也不愿意费劲使自己显得有趣,那都太累了。我独处时最轻松,因为我不会觉得自己乏味,即使乏味,也自己承受,不累及他人。
  10. 青灯照壁人初睡,冷雨敲窗被未温。
  11. 回忆能让一个人变的神经质前一秒还是嘴角微扬,下一秒却湿润了眼眶,这可能是一个突然的跟你记忆有关的瞬间,抑或相似的某个情节都足以让你忽然之间泪流满面……
  12. 去年元夜时,花市灯如昼。月上柳梢头,人约黄昏后。
    今年元夜时,花与灯依旧。不见去年人,泪满春衫袖。
  13. 初听不知曲中意,再听已是曲中人。既然已成曲中人,何必再识曲中意。
  14. 自古表白多白表,从来情书难书情。
  15. 笑谈年少多少年,常与生人道人生。

2.新建scapy工程项目

之所以用下面这种crawl模板,是因为该模板更适合去提取出文章页面链接,避免我们过多的解析页面,scrapy会自动访问我们定义的url样式,大大节省访问时间。

创建名为juzimi的project,以及名为sentence的爬虫py文件。

scrapy startproject juzimi
cd juzimi
scrapy genspider -t crawl sentence www.juzimi.com#用的是scrapy提供的另外一种crawl模板

3.为了方便运行,还是在一级目录下新建main.py文件,代码如下:

from scrapy import cmdline
cmdline.execute('scrapy crawl sentence'.split())

4.编写item.py里面的代码如下:

class JuzimiItem(scrapy.Item):title=scrapy.Field()#句子出处sentence=scrapy.Field()#句子writer=scrapy.Field()#作者love=scrapy.Field()#喜爱数url=scrapy.Field()#文章url,存储这个链接是为了方便上面某些字段不对,方便排错。

5.编写sentence.py里面的主函数代码:

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from w3lib.html import remove_tags#python自带类,可去除内容里面的标签
from ..items import JuzimiItem#..代表相对路径即当前文件下class SentenceSpider(CrawlSpider):name = 'sentence'allowed_domains = ['www.juzimi.com']start_urls = [   'https://www.juzimi.com/allarticle/jingdiantaici','https://www.juzimi.com/allarticle/sanwen'        ]rules = (Rule(LinkExtractor(allow=r'article/\d+'), callback='parse_item', follow=True),#句子列表url如:'https://www.juzimi.com/article/28410')def parse_item(self, response):sentences = [remove_tags(item) for item in response.css('.xlistju').extract()]loves=[ item.lstrip('喜欢') for item in response.css('div.view-content:nth-child(2) .flag-action::text').extract()]writers=[item.css('.views-field-field-oriwriter-value::text').extract() if item.css('.views-field-field-oriwriter-value::text') else ''for item in response.css('div.view-content:nth-child(2) .xqjulistwafo')]titles=[item for item in response.css('div.view-content:nth-child(2) .xqjulistwafo .active::text').extract()]for sentence,love,writer,title in zip(sentences,loves,writers,titles):item = JuzimiItem()item['sentence']=sentenceitem['love']=loveitem['writer']=writeritem['title']=titleitem['url']=response.urlreturn item

发现自己真的爱上了列表推导式,每个句子列表页各有10条句子,之所在不在句子详情页获取字段值,是考虑到详情页没有我想要的喜爱量,而且在列表页都都能获取到字段值,所有说没必要到详情页获取。有的句子是没有作者的,所有在列表推导式里面加了判断语句,如果有对应作者的标签就获取,没有就等于空’’。返回的item字段如下:

{'love': '(2139)','sentence': '陌上人如玉,公子世无双。','title': '木玉成约','url': 'https://www.juzimi.com/article/45916','writer': ['叶迷']}{'love': '(110)','sentence': '生活总是索取大于给予。','title': '银河护卫队','url': 'https://www.juzimi.com/article/76689','writer': ''}{'love': '(405)','sentence': "Secrets have a cost. They're not free. Not now, not ever. \r"'秘密是有代价的。没有免费的秘密。现在没有,任何时候都没有。','title': '超凡蜘蛛侠','url': 'https://www.juzimi.com/article/27324','writer': ''}{'love': '(140)','sentence': '仇恨就像毒药,慢慢的会让你的灵魂变得丑恶。','title': '蜘蛛侠3','url': 'https://www.juzimi.com/article/37095','writer': ''}{'love': '(30)','sentence': '“从今以后,我将不再贪吃,而只是爱吃而已。”','title': '加菲猫的幸福生活','url': 'https://www.juzimi.com/article/362645','writer': ['加菲猫']}

6.利用CsvItemExporter保存到本地了

考虑到scraoy提供了exporter,可以查看expoter源码,scrapy提供多种导出方式,如下所示:

__all__ = ['BaseItemExporter', 'PprintItemExporter', 'PickleItemExporter','CsvItemExporter', 'XmlItemExporter', 'JsonLinesItemExporter','JsonItemExporter', 'MarshalItemExporter']

这里就利用CsvItemExporter导出器导出上面返回的item,因为csv格式文件可以通过excel打开。所以接下来编写pipelines.py里面的文件,代码如下:

class CsvExporterPipeline(object):#利用scrapy提供的内置CsvExporter导出csv文件def __init__(self):self.file=open('new_sentence.csv','wb')#打开存储文件,文件有没有新建都不重要self.exporter=CsvItemExporter(self.file,encoding='utf-8')#创建导出类对象,指定编码格式self.exporter.start_exporting()#开始导入def spider_closed(self,spider):self.finish_exporting()#关闭导入def process_item(self,item,spider):self.exporter.export_item(item)return item #传递item

代码写完记得在settings.py里面开启ITEM_PIPELINES,代码如下:

ITEM_PIPELINES = {'juzimi.pipelines.CsvExporterPipeline':300,
}
ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 2
USER_AGENT ='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'

7.设置代理中间件。

满心欢喜的等待结果,结果给我报了个403禁止访问,后面直接给我封了ip,浏览器都不能访问了,无奈只能上代理了,代理大法好啊。这里推荐阿布云代理,有小时制,同时各种接口文档写的很详细,所以说还是比较方便的。以下代码为阿布云提供文档

import base64
# 代理服务器
proxyServer = "http://http-dyn.abuyun.com:9020"
# 代理隧道验证信息
proxyUser = "user"#购买后会有
proxyPass = "password"#购买后会有
proxyAuth = "Basic " + base64.urlsafe_b64encode(bytes((proxyUser + ":" + proxyPass), "ascii")).decode("utf8")
class ProxyMiddleware(object):def process_request(self, request, spider):request.meta["proxy"] = proxyServerrequest.headers["Proxy-Authorization"] = proxyAuth

接下来只要配置中间件即可:

DOWNLOADER_MIDDLEWARES = {'juzimi.middlewares.ProxyMiddleware': 543,
}

8.开启运行项目界面截图如下:

这里有一个小问题,生成的csv文件在pycharm里面打开都不是乱码的,记事本打开也不是乱码的,但是用excel打开就乱码了,后面我尝试着通过记事本指定编码格式为ascii另存为新的文件,再打开就时正常的了,csv文件截图如下:
这里我根据喜爱量排序下,贴出来吧,本打算只贴出前十名,翻着翻着后面竟然有我大亚索台词,HASAKI,那必须贴一波,看来亚索还是好多人都喜欢,台词听起来都霸气。

利用scrapy爬取句子迷网站优美句子存储到本地(喜欢摘抄的人有福了!)相关推荐

  1. scrapy爬取知名问答网站(解决登录+保存cookies值+爬取问答数据)--完整版完美解决登录问题

    菜鸟写Python:scrapy爬取知名问答网站 实战(3) 一.文章开始: 可能看到这篇文章的朋友,大多数都是受慕课网bobby讲师课程的影响,本人也有幸在朋友处了解过这个项目,但是似乎他代码中登录 ...

  2. Python利用Scrapy爬取前程无忧

    ** Python利用Scrapy爬取前程无忧 ** 一.爬虫准备 Python:3.x Scrapy PyCharm 二.爬取目标 爬取前程无忧的职位信息,此案例以Python为关键词爬取相应的职位 ...

  3. 利用scrapy爬取京东移动端的图片素材和商品信息

    有一个练习项目需要一些带分类信息的商品测试图片,从现有的电商网站爬取是个不错的选择.刚好最近又在练习scrapy的使用,这一篇记录一下用scrapy爬取京东的图片素材并保存商品信息的思路. 文中代码共 ...

  4. 【python实现网络爬虫(5)】第一个Scrapy爬虫实例项目(Scrapy原理及Scrapy爬取名言名句网站信息)

    Scrapy介绍 总共有五部分组成的:具体的流程可看图示 引擎.调度器.下载器.蜘蛛和项目管道 爬取流程 针对于每个URL, Scheduler -> Downloader -> Spid ...

  5. Python爬虫之利用xpath爬取ip代理网站的代理ip

    爬虫工具 python3 pycharm edge/chrome requests库的用法 requests库是python中简单易用的HTTP库 用命令行安装第三方库 pip install req ...

  6. Python利用Scrapy爬取智联招聘和前程无忧的招聘数据

    爬虫起因   前面两个星期,利用周末的时间尝试和了解了一下Python爬虫,紧接着就开始用Scrapy框架做了一些小的爬虫,不过,由于最近一段时间的迷茫,和处于对职业生涯的规划.以及对市场需求的分析, ...

  7. Python爬虫入门-利用scrapy爬取淘女郎照片

    最近看到有个相对来说比较简单的可以爬取淘女郎的链接地址,它主要可以通过改变URL中page参数来实现翻页. 我们这个这个链接进入到一个淘女郎的页面,进入相册页面,里面有很多相册,我们打开其中一个,可以 ...

  8. scrapy mysql 词云_利用Scrapy爬取姓名大全作词云分析

    scrapy介绍 Scrapy 是一套基于Twisted.纯python实现的异步爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,相当的方便- 整体架构和组 ...

  9. 利用Scrapy爬取1905电影网

    本文将从以下几个方面讲解Scrapy爬虫的基本操作 Scrapy爬虫介绍 Scrapy安装 Scrapy实例--爬取1905电影网 相关资料 Scrapy 爬虫介绍 Scrapy是Python开发的一 ...

  10. scrapy mysql 豆瓣_利用Scrapy爬取豆瓣图书并保存至Mysql数据库

    Scrapy是一个纯Python语言写的爬虫框架,本次用它来爬取豆瓣图书的数据. 准备工作 没有安装Scrapy的同学需要安装一下,有两种方式安装: 安装了Anaconda的同学直接在命令行输入con ...

最新文章

  1. 078_html5Canvas
  2. Prism学习笔记(三):对Prism中模块化程序的理解。
  3. android 中system 如何打包编译生成的
  4. JPA中实现单向一对多的关联关系
  5. html visibility 替代服务器端控件 visable属性!
  6. .net core ——微服务内通信Thrift和Http客户端响应比较
  7. Linux命令gitview,使用linux的gitview命令查看文件内容
  8. C#LeetCode刷题之#118-杨辉三角(Pascal‘s Triangle)
  9. jquery.ajax之beforeSend方法使用介绍
  10. 大数据之-Hadoop之HDFS的API操作_文件上传---大数据之hadoop工作笔记0056
  11. 算法:回溯八 Combinations指定个数组合
  12. python:批量修改文件夹名称
  13. Python小技术-----三维画图
  14. dellr420部署os_Dell R420 RAID建立以及系统安装
  15. mysql 设置密码出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  16. mysql驱动下载mac
  17. linux查看磁盘空间大小(du)
  18. 前端解放生产力之–动画(Adobe Effects + bodymovin + lottie)
  19. 减少在线去重造成的数据碎片
  20. 股票L1和L2都代表是什么意思?

热门文章

  1. k8s pv与pvc
  2. swin transformer解读
  3. 2020年408真题_2020年港澳台联考真题——化学!
  4. 大龄程序员的成长之路
  5. 第七章 文本数据-学习笔记+练习题
  6. LaTeX新手半小时速成手册(不速成你打我
  7. nginx参数keepalive_timeout
  8. 因“投标人不足”终止后,电信、联通重启5100万户5G消息招标项目!
  9. jolog扫地机器人怎么样_扫地机器人怎么样?
  10. django如何连接Mysql中已有的数据库