实训总结-----Scrapy爬虫
1.安装指令
pip install scrapy
2.创建 scrapy 项目
任意终端 进入到目录(用于存储我们的项目)
scrapy startproject 项目名
会在目录下面 创建一个以 项目名 命名的文件夹
终端也会有提示
cd 项目名
scrapy genspider example example.com
3.运行爬虫指令
scrapy crawl 爬虫名 --nolog //nolog是不看日志
4.输出 xml csv json格式的文件
scrapy crawl 爬虫名 -o 文件名
5.目录
(1)__init__.py 此文件为项目的初始化文件,主要写的是一些项目的初始化信息。
(2)items.py 爬虫项目的数据容器文件,主要用来定义我们要获取的数据
(3)piplines.py 爬虫项目的管道文件,主要用来对items里面定义的数据进行进一步的加工与处理
(4)settings.py 爬虫项目的设置文件,主要为爬虫项目的一些设置信息
(5)spiders文件夹 此文件夹下放置的事爬虫项目中的爬虫部分相关
6.novel.py文件
import scrapy
from scrapy import Selector
# scrapy01 文件的名字
# items scrapy01文件下面的名字
# Scrapy01Item items里面的类名
from scrapy01.items import Scrapy01Itemclass NovelSpider(scrapy.Spider):# 爬虫名name = "novel"#允许爬取的域名allowed_domains = ["www.shicimingju.com"]# 爬取的具体地址 必须在 允许域名的下面 子域名start_urls = ["https://www.shicimingju.com/book/hongloumeng.html"]# parse 爬取到数据 默认/调用的def parse(self, response):# response 已经 是爬取的结果 requests.get()sel = Selector(response)li_list = sel.css('div.book-mulu > ul > li')for li_item in li_list:novel_item = Scrapy01Item()# 章节是 a标签内容# 取标签内容 标签名::text# extract() 所有的标签# extract_first() 第一个标签chapter = li_item.css('a::text').extract_first()# 链接是 a标签属性# 取标签属性值 标签名::(属性)url = li_item.css("a::attr(href)").extract_first()# novel_item的字段和 items.py里面 定义的模型 对应novel_item['chapter'] = chapternovel_item['url'] = urlprint("novel_item:",novel_item)# return novel_item # 循环一次就出去了yield novel_item # yield 迭代器
# 配置伪装 头 settings里面配置 17行
7.piplines.py文件对数据进行json和xlsx导出
# 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# useful for handling different item types with a single interface
import jsonimport openpyxl
from itemadapter import ItemAdapterclass Scrapy01XlsxPipeline:def __init__(self):print('init---------初始化')# 创建工作库self.wb = openpyxl.Workbook()# 获取激活的工作self.ws = self.wb.activeself.ws.title = '红楼梦'# 参数是元组self.ws.append(('章节','地址'))# item就是爬虫文件 解析/parse的数据def process_item(self, item, spider):print('process_item-----钩子----数据',item)# item.['chapter']chapter = item.get('chapter','默认值')url = item.get('url') or ''# 追加数据self.ws.append((chapter,url))return item# 开始爬取 必须写第二个参数spiderdef open_spider(self,spider):print('打开蜘蛛')# 爬取完毕def close_spider(self,spider):self.wb.save('红楼梦1.xslx')print('爬取完毕')class Scrapy01JsonPipeline:def __init__(self):# 存储爬取的数据self.data = []self.fp = open("./练习.json",'w',encoding='utf-8')# 拿到数据就走def process_item(self,item,spider):url = item.get("url") or ''chapter = item.get("chapter",'')# 添加爬取数据self.data.append((chapter,url))# 防止每爬取一次数据就写一次if len(self.data)>50:json.dump(self.data,self.fp,ensure_ascii=False)self.data.clear()return itemdef close_spider(self,spider):if len(self.data) > 0:json.dump(self.data, self.fp, ensure_ascii=False)self.fp.close()print('关闭')
# 共52条数据
# 节流 51次写入一次 置空
# 第52次 完了走关闭 发现还有一条数据写入
8.items.py
import scrapyclass Scrapy01Item(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()# passchapter = scrapy.Field()# 存储 章节内容的urlurl=scrapy.Field()# 根据自己的需求 定义字段 N个
9.settings.py文件
1.USER_AGENT需要打开爬取数据
USER_AGENT ="Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57"
2.开启管道,Scrapy01XlsxPipeline和Scrapy01JsonPipeline都是iplines.py文件中的类名。
# 开启管道 配置多个管道 数字越小优先级越小
# Scrapy01XlsxPipeline 管道文件类名
ITEM_PIPELINES = {"scrapy01.pipelines.Scrapy01XlsxPipeline": 300,"scrapy01.pipelines.Scrapy01JsonPipeline": 200,
}
相关文章:
实训总结-----Scrapy爬虫
1.安装指令 pip install scrapy 2.创建 scrapy 项目 任意终端 进入到目录(用于存储我们的项目) scrapy startproject 项目名 会在目录下面 创建一个以 项目名 命名的文件夹 终端也会有提示 cd 项目名 scrapy genspider example example.com 3.运行爬虫指令 scrapy craw…...
前端开发职业规划指南:如何做好职业规划与发展
引言 前端开发是目前互联网行业中最火热的职业之一,也是非常具有发展前景的职业之一。随着互联网技术的不断更新和发展,前端开发的职业规划也在不断地发生变化。本文将从几个方面来探讨前端开发的职业规划。 一、职业发展路径 1.前端初级工程师 前端初…...
创业第一步:如何写好商业计划书
即使你的项目不需要融资,你也把标准商业计划书作为一个工具模板来应用,帮助更全面的盘点你要做的事情。 撰写一份性感的商业计划书如同造房子:第一步是科学设计,打好结构(有清晰的撰写逻辑);第…...
【Linux驱动】字符设备驱动相关宏 / 函数介绍(module_init、register_chrdev)
驱动运行有两种方式: 方式一:直接编译到内核,Linux内核启动时自动运行驱动程序方式二:编译成模块,使用 insmod 命令加载驱动模块 我们在调试的时候,采用第二种方式是最合适的,每次修改驱动只需…...
axios解决跨域问题
Vue3中使用axios访问聚合的天气API,出现跨域问题,需要在前端进行一些配置: 首先是修改vue.config.js: const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServe…...
R语言作图——热图聚类及其聚类结果输出
代码 不多说了,做个记录,代码如下。 library(pheatmap) library(RColorBrewer) # args commandArgs(TRUE) betafile "twist_common_panel_434.csv" infofile "twist_common_panel_434.txt" title "twist_common_panel&qu…...
Tomcat优化
Tomcat优化 Tomcat默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面,分别为操作系统优化(内核参数优化),Tom…...
我的GIT练习TWO
目录 前言 GIT安装教程 Git作者 GIT优点 GIT缺点 为什么要使用 Git GIT练习TWO C1 C2 C3 C4 C5 C6 C7 总结 前言 Git 是一个分布式版本控制及源代码管理工具;Git 可以为你的项目保存若干快照,以此来对整个项目进行版本管理 GIT安装教程 点击进入查看教程…...
个人器件库整理
样品本 包含如下: 电容器件: 元件值封装备注钽电容47uF 10V1206钽电容10uF 10V1206电容10uF 10% 10V0603X5R,CL10A106KP8NNNC 元件值封装备注100nF电容50V,10%0603 电阻器件: 元件值封装备注75 Ω \Omega Ω…...
javascript——内存管理
JavaScript内存管理是Web开发中的一个重要主题。正确管理内存可以提高应用程序的性能和稳定性。本文将介绍JavaScript中的内存管理概念、常见的内存泄漏问题以及一些有效的内存管理技巧。 什么是JavaScript内存管理? JavaScript具有自动内存管理机制,开…...
Qt5.15.2安卓Android项目开发环境配置
1、Qt Creator 4.11.2 官方下载:https://download.qt.io/archive/qtcreator/4.11/4.11.2/ 镜像下载:https://mirrors.cloud.tencent.com/qt/archive/qtcreator/4.11/4.11.2/ 2、Qt 5.15.2 Android 官方更新器内部下载 参考:https://blog…...
第四十三章 弹跳训练2(灵识扫描)
“再不脱离便会陷死在里面。”这个声音似乎来自脑海深处某个隐秘角落。 双眼一睁,灵识退去,空空的头壳兀自嗡嗡作响,一股说不清道不明的失落感笼罩全身,似要将自己拖入抑郁的谷底。 不!没什么好失落沮丧的!…...
【location对象的方法,history对象,navigator--BOM】
location对象的方法 location.assign()//跟href一样,可以跳转页面(也称重定向页面) location.replace()//替换当前页面,因为不记录历史,所以不能后退页面 location.reload()//重新加载页面,相当于刷新按钮或…...
论文笔记:Normalizing Flows for Probabilistic Modeling and Inference
Abstract 正则流(Normalizing flows)提供了一种通用的机制来定义富有表达力的概率分布,只需要指定一个(通常简单的)基础分布和一系列可逆变换。 Intraduction 正则流通过将简单的密度通过一系列变换来产生更丰富、可…...
java 异常类介绍
Java 异常(Exception)是指在程序运行期间出现的错误或异常情况。Java 异常处理机制允许程序在出现异常情况时进行处理,避免程序崩溃或出现不可预知的错误 一、Java 异常的概念 Java 异常是指程序在运行期间出现的错误或异常情况。Java 异常…...
shiro 550 反序列化rce
Apach shiro 是一款开源安全框架,提供身份验证,授权,会话管理等。 shiro 550 反序列化漏洞rce 通关利用它反序列化的漏洞直接执行rce 加密的用户信息序列化后储存在名为remenber -me的cooike中。攻击者可以使用shiro默认密钥伪造cooike&am…...
【C++】---模板初阶(超详练气篇)
个人主页:平行线也会相交💪 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】💌 本专栏旨在记录C的学习路线,望对大家有所帮助🙇 希望我们一起努力、成长&…...
windows系统典型漏洞分析
内存结构 缓冲区溢出漏洞 缓冲区溢出漏洞就是在向缓冲区写入数据时,由于没有做边界检查,导致写入缓冲区的数据超过预先分配的边界,从而使溢出数据覆盖在合法数据上而引起系统异常的一种现象。 ESP、EPB ESP:扩展栈指针(…...
WPF开发txt阅读器:需求分析和文件读写
文章目录 需求分析读取文本文件保存文本文件 需求分析 尽管现在比较主流的阅读格式已经是epub, modi之类的,但txt的使用范围要远比前两者广泛,所以做一个txt阅读器还是有必要的。 但是对于书籍阅读而言,纯文本不包含目录信息,这…...
C++服务器框架开发9——日志系统LogFormatter_4/各个类的关系梳理/std::function/std::get
该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。 其教学视频见:[C高级教程]从零开始开发服务器框架(sylar) 上一篇:C服务器框架开发8——日志系统LogFormatter_3/override/宏定义优化switchcase结构 C服务器框架开发9——日志系统LogFormatt…...
arm平台上的MNN编译与运行
0.成果物 直接获取成果物见:https://download.csdn.net/download/u012824853/87867665 以下为编译、运行过程 1.编译准备 在GitHub - alibaba/MNN: MNN is a blazing fast, lightweight deep learning framework, battle-tested by business-critical use cases …...
python 编译安装指定版本 for linux
python环境是linux中必备的,部分发行版会自带python,有时候需要安装手动安装 注意:如果需要多个版本并存,建议使用conda环境,如果自己配置多版本,需要用多个软链接 conda环境,可以参考&#x…...
在Linux系统下基于Docker搭建Redis集群
创建镜像 #部署Redis集群,该集群有3个节点; --cluster-enabled yes允许启用集群; docker create --name redis-node--01 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file redis-node--01.conf --port 6379…...
牛客网刷题Day5
1.内容中可以使用哪个元素来表示 <article> 标签外的内容? A aside B cite C article D class 正确答案:A 解析:<aside> 标签定义 <article> 标签外的内容,aside 的内容应该与附近的内容相关 2. 以下的HTML代码…...
Vue.js 中的动态组件是什么?如何使用动态组件?
Vue.js 中的动态组件是什么?如何使用动态组件? Vue.js是一种流行的前端框架,它提供了一种称为“动态组件”的技术,使得我们可以动态地切换组件的内容和结构。在本文中,我们将深入探讨Vue.js中的动态组件,包…...
2023年京东618预售数据:传统滋补成预售黑马,预售额超27亿
这一期主要分享一下此次京东618预售期间的一个黑马行业——传统滋补。不管是从预售量和预售额来看,传统滋补品类的成绩都是此次大促中的佼佼者。 究其原因,近几年养生滋补也掀起了一股“国潮风”。在小红书、抖音等社交平台上,关于“健康养生…...
【Linux系统基础快速入门详解】Linux 常用文件过滤编辑命令原理详解和每个命令使用场景以及实例
Linux 文件过滤编辑命令:echo,printf,cat,tee,特殊符号: {a..z},seq序列,rename 文件过滤编辑命令:echo:将字符串输出到终端或文件中。常用于输出环境变量,或者在shell脚本中输出一些提示信息。例如:echo $PATH,输出环境变量PATH的值。printf:格式化输出字符串到终端或文…...
05WEB系统的通信原理图
WEB系统的通信原理 名称作用URL统一资源定位符, 例如:http://www.baidu.com域名在https://www.baidu.com/这个网址中www.baidu.com 是一个域名IP地址计算机在网络当中的一个身份证号, 在同一个网络当中IP地址是唯一的, 有了IP地址两台计算机直接才能建立连接通信端口号一个计算…...
降低试错成本,低代码或成企业数字化转型突破口
近年来,随着市场竞争和宏观环境的双重驱动,数字化已经成为企业提升竞争性和保持可持续发展的重要手段,大多数企业意识到数字化转型的重要性,纷纷入局。 作为数据驱动业务创新的一个新方法,但行业成功的案例并不多&…...
串口助手(串口发送接收数据, 定时, 清空, hex显示)
文章目录 前言一、串口接收数据1. 默认接收,换行,hex显示2. 清空接收区数据3. 保存接受区数据 二、串口发送数据1. 默认发送2. 定时发送 三、串口助手优化1. 设置组合框当前内容。2. 未检测到串口,弹出警告。3. 载入文件 总结 前言 这篇文章…...
网站制作平台/广州seo优化电话
针对OpenGL 3.2 和 GLSL 1.50 提供的扩展。 具体可看:https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader5.txt...
wordpress 上传大文件/微营销平台
窄带物联网(Narrow Band Internet of Things) 蜂窝网络 关键特性 低功耗,低成本,远距离,大连接 NB-IoT 用途 远程抄表,共享单车,宠物跟踪,无人售货,智能路灯,…...
网上推广产品哪个平台效果好/百度竞价关键词怎么优化
帮个朋友写个作业 个小型的成绩管理系统(第一阶段) 早上五点多醒来,怎么也睡不着,正问原因,原来是想和你们一起构建一个小型的成绩管理系统。假如一个班有m个同学刚考完一门课,现在需要录入成绩,…...
网页制作模板甜品蛋糕/seo中文意思是
mysql-connector-java-8.0.23.jar在官网上下载进入官网下载地址:https://dev.mysql.com/downloads/connector/j/ 选择 (注:select Operating System这里一定要修改!!!) 下载 解压然后使用 …...
心悦做宠物的网站/seo有些什么关键词
14.1 组件开发基础 CDD 基础 CDD(Component-Driven Development) 自上而下从组件级别开始,到页面级别结束 先从相对完的的设计中抽象出来组件,先隔离开发组件然后再开发页面 CDD的好处 组件在最大程度被重用并行开发 对单个…...
WordPress 多厂商/seo关键字优化技巧
在上一篇博客中(《HTTP权威指南》之HTTP相关概念详解)我们简单对HTTP相关的基本概念做了一些简单的了解,但未对HTTP连接管理的内容做一些详细的介绍。本篇博客我们就一起来看一下HTTP连接管理的相关内容。世界上几乎所有的HTTP通信都是有TCP/IP承载的,它…...