文章目录

  • 前言
  • 效果展示:
  • 一、安装scrapy库
  • 二、创建scrapy项目
  • 三、新建爬虫文件scmg_spider.py
  • 四、配置settings.py文件
  • 五、定义数据容器,修改item.py文件
  • 六、定义爬虫,修改scmg_spider.py爬虫文件
  • 七、定义管道,修改pipelines.py文件
  • 八、开启管道ShicimingjuPipeline
  • 九、创建运行项目的main.py文件,并运行项目
  • 总结

前言

我们将使用Scrapy框架爬取诗词网站的古代爱情诗,收集起来爱情诗送给女生,送给女友。Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。


效果展示:

网站页面:

爬取内容保存的文件:

一、安装scrapy库

在项目终端的命令行中输入如下安装命令并执行:

pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple

二、创建scrapy项目

在终端中对应的目录下,执行命令:

scrapy startproject shicimingju

三、新建爬虫文件scmg_spider.py

通过PyCharm工具打开项目,并在spiders目录下新建爬虫文件scmg_spider.py

四、配置settings.py文件

  1. 打开项目中的settings.py文件,设置ROBOTSTXT_OBEY ,不遵循 Robot协议 ,避免爬取不了数据
#设置robots.txt文本为False
# Obey robots.txt rules
ROBOTSTXT_OBEY = False
  1. 设置DEFAULT_REQUEST_HEADERS,伪装成浏览器
# Override the default request headers:
DEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en','User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Mobile Safari/537.36'}

五、定义数据容器,修改item.py文件

class ShicimingjuItem(scrapy.Item):# define the fields for your item here like:#诗名title = scrapy.Field()#朝代dynasty = scrapy.Field()#作者author = scrapy.Field()#内容content = scrapy.Field()

六、定义爬虫,修改scmg_spider.py爬虫文件

  1. 导入爬虫依赖包
import scrapy
from scrapy import Request
from scrapy.spiders import Spider
from ..items import ShicimingjuItem
  1. 定义爬虫类
class GssSpiderSpider(Spider):name = 'scmj_spider'  # 爬虫名称def start_requests(self):#发起起始页的请求urls ='https://www.shicimingju.com/shicimark/aiqingshi.html'yield Request(urls)
  1. 实现解析函数,解析网页内容
 #解析内容def parse(self, response):scmj_divs = response.xpath("//div[@class='card shici_card']/div")for scmj_divs in scmj_divs:#获取诗名title = scmj_divs.xpath('div[2]/h3/a/text()').get()print("标题:", title)# 获取诗的朝代和作者source = scmj_divs.xpath("div/text()")dynasty=str()author=str()if source.getall():dynasty=source.getall()[1]dynasty=dynasty.strip()author=source.getall()[2]author=author.strip()print("朝代:",dynasty)print("作者:",author)# 获取诗的具体内容content_list = scmj_divs.xpath("div[2]/div/text()")content=str()if content_list.getall():content=content_list.getall()[0:2]#转换成字符串,并给每一句诗句添加换行符,去掉空格content="\n".join(content).strip()#解析网页中需要点击更多显示的诗句content_part = scmj_divs.xpath("div[2]/div/div/text()")if content_part.getall():content_part=content_part.getall()[0:-1]#转换成字符串,并给每一句诗句添加换行符,去掉空格content_part="\n".join(content_part).strip()#拼接两部分诗句为完整诗句content=content+"\n"+content_partprint(content)# 将解析的数据传入item中item = ShicimingjuItem(title=title, dynasty=dynasty, author=author, content=content)# 将item传送到管道piplinesyield item
  1. 多页面爬取
        # 多页面爬取#解析下一页链接中url,因为第二页开始下一页的标签位置改变,需要判断后再进行解析next= response.xpath("//div[@id='list_nav_part']/a[8]/text()").get()if next=="下一页":next_href = response.xpath("//div[@id='list_nav_part']/a[8]/@href").get()else:next_href = response.xpath("//div[@id='list_nav_part']/a[9]/@href").get()if next_href:#使用urljoin将下一页url转换成完整urlnext_url = response.urljoin(next_href)print(next_url)#获取下一页的请求request = scrapy.Request(next_url)yield request

七、定义管道,修改pipelines.py文件

class ShicimingjuPipeline(object):#保存爬取的数据到txt文件中def process_item(self, item, spider):with open("爱情诗.txt", "a", encoding="utf-8") as f:#按照自己想要的格式保存爬取的爱情诗到文件中scmj="\n"+item["title"]+item["dynasty"]+item["author"]+"\n"+item["content"]+"\n"+"="*40f.write(scmj)return item

八、开启管道ShicimingjuPipeline

在settings.py文件中配置如下设置

ITEM_PIPELINES = {'shicimingju.pipelines.ShicimingjuPipeline': 300,
}

九、创建运行项目的main.py文件,并运行项目

  1. 在scrapy项目根目录下新建一个main.py文件,添加如下代码
from scrapy import cmdline
cmdline.execute("scrapy crawl scmj_spider".split())

···

  1. 运行main.py文件,查看项目下"爱情诗.txt"文件内容如下:

总结

以上就是今天介绍的内容,本文介绍了使用scrapy框架爬取诗词网站的内容的过程,如有疑问或者不妥的地方欢迎留言讨论。
如需要现成的项目源码文件的可以去如下链接下载:
链接: https://download.csdn.net/download/baidu_37075689/85252724

Python的Scrapy框架爬取诗词网站爱情诗送给女友相关推荐

  1. 利用python的scrapy框架爬取google搜索结果页面内容

    scrapy google search 实验目的 爬虫实习的项目1,利用python的scrapy框架爬取google搜索结果页面内容. https://github.com/1012598167/ ...

  2. Python爬虫 scrapy框架爬取某招聘网存入mongodb解析

    这篇文章主要介绍了Python爬虫 scrapy框架爬取某招聘网存入mongodb解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建项目 sc ...

  3. python爬虫库scrapy_使用Python爬虫Scrapy框架爬取数据

    时隔数月,国庆期间想做个假期旅游的分析展示. 1.通过Python爬取旅游网站上数据,并存储到数据库 2.通过Echart/FineReport/Superset等数据分析工具对数据展示 环境: Wi ...

  4. python爬虫scrapy框架爬取网页数据_Scrapy-Python

    scrapy Scrapy:Python的爬虫框架 实例Demo 抓取:汽车之家.瓜子.链家 等数据信息 版本+环境库 Python2.7 + Scrapy1.12 初窥Scrapy Scrapy是一 ...

  5. python爬虫scrapy框架爬取糗妹妹段子首页

    声明:本文仅为学习爬虫,请勿商业和恶意攻击网站,本文所有解释权归作者. 本文分别用两种方法把获取的段子信息存储到了本地,分别是txt文件和json文件, txt文件比较简单,生成字典后用命令直接执行即 ...

  6. Python爬虫 scrapy框架 爬取智联招聘,并把数据存入数据库,存为json格式的数据

    First:创建项目:执行下面三句命令: 1. scrapy startproject zhilianzhaopin2. cd zhilianzhaopin3.scrapy genspider zhi ...

  7. scrapy框架爬取虎扑论坛球队新闻

    目录 Scrapy 框架 制作 Scrapy 爬虫 一共需要4步: Scrapy的安装介绍 Windows 安装方式 一. 新建项目(scrapy startproject) 二.明确目标(mySpi ...

  8. Python网络爬虫数据采集实战:Scrapy框架爬取QQ音乐存入MongoDB

    ​    通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本 ...

  9. Python网络爬虫数据采集实战(八):Scrapy框架爬取QQ音乐存入MongoDB

    通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本涵盖了爬虫 ...

最新文章

  1. Linux-PAM PAM-MySQL的总结
  2. SharePoint 2010 初体验(二)搭建一个简单的三态工作流
  3. Azure手把手系列 4:深入了解Azure 一块钱当三块用
  4. Power BI与Power Query、Power Pivot 是什么关系?
  5. 一份从 0 到 1 的 Java 项目实践清单
  6. 【转】简单的解释XSS攻击
  7. 禅道批量删除bug_写代码有这16个好习惯,可以减少80%非业务的bug
  8. 经验总结:java自学视频免费
  9. Rust创建项目的两种方式
  10. 这个网站还不错,可以多看看(这个是学习的网站,没有广告)
  11. 请问mac上下virtualBox之后无法安装VBoxGuestAdditions怎么办??
  12. 数字人实业应用场景,远远不止屏幕互动
  13. 【3款文献阅读的插件】
  14. 收费外贸企业邮箱的好处?外贸企业该如何选择更好的邮箱服务呢?
  15. SQL Server Always Encrypted加密使用
  16. [USACO10HOL]赶小猪
  17. 机器人操作系统ROS 1.0 和 2.0 发展规划2018-2025(Open Robotics)译
  18. 最漂亮HTML5高端个人简历自适应模板
  19. tplink里的DMZ主机是什么意思
  20. Vision Transformer 必读系列之图像分类综述(二): Attention-based

热门文章

  1. 微信小程序商城系统源码
  2. 机器学习-19-Unsupervised Learning-03-PCA part2(无监督学习之PCA深入探讨 part2)
  3. Idea中Maven报错:Failed to read artifact descriptor for jar包名.jar.jar包版本的解决方式
  4. HTML5+CSS3+JavaScript 实现按键令小女孩移动,改变动画效果
  5. python 3d渲染_python带你玩玩3D渲染
  6. 正则表达式截取字符串
  7. 心疼女人的12种方式(转载)
  8. 运动用品品牌排行榜,双十一运动好物选购清单分享
  9. Java小程序之斗地主
  10. 前端实现js模糊查询关键字显示下拉框功能的实例教程