scrapy框架--

2023-09-18 20:09:57

Scrapy是一个用于爬取数据的Python框架。下面是Scrapy框架的基本操作步骤:

  1. 安装Scrapy:首先,确保你已经安装好了Python和pip。然后,在命令行中运行以下命令安装Scrapy:pip install scrapy

  2. 创建Scrapy项目:使用Scrapy提供的命令行工具创建一个新的Scrapy项目。在命令行中切换到你想要创建项目的目录,并执行以下命令:scrapy startproject project_name。其中,project_name是你自己定义的项目名称。

  3. 定义爬虫:进入项目目录,并在命令行中执行以下命令创建一个新的爬虫:scrapy genspider spider_name website.com。其中,spider_name是你自己定义的爬虫名称,website.com是你要爬取数据的目标网站的域名。

  4. 编写爬虫代码:在项目目录下的spiders文件夹中找到你创建的爬虫文件(以.py结尾),使用文本编辑器打开该文件。在爬虫代码中,你可以定义如何发送请求、处理响应和提取数据等操作。你可以参考Scrapy官方文档来了解更多关于编写爬虫代码的详细信息。

  5. 配置爬虫:如果需要,你可以在项目目录下的settings.py文件中配置爬虫的相关设置,例如设置请求头、设置User-Agent等。

  6. 启动爬虫:在命令行中进入项目目录,并执行以下命令启动爬虫:scrapy crawl spider_name。其中,spider_name是你之前定义的爬虫名称。

  7. 处理爬虫数据:爬虫运行后,它会自动访问目标网站,并根据你定义的规则提取数据。你可以在爬虫代码中定义如何处理这些数据,例如保存到文件、存储到数据库

import scrapy


class ItcastSpider(scrapy.Spider):
    name = "itcast"
    allowed_domains = ["itcast.cn"]
    # 修改起始url
    start_urls = ["https://www.itcast.cn/channel/teacher.shtml#ajavaee"]
    # 在这个方法中实现爬取逻辑
    def parse(self, response):
        # 定义对于网站的相关操作
        # with open('itcast.html','wb') as f:
        #     f.write(response.body)
#/html/body/div[1]/div[6]/div/div[2]/div[6]/div/div[2]/div[1]/ul/li/div
# /html/body/div[1]/div[6]/div/div[2]/div[6]/div/div[2]/div[2]/ul/li[1]/div

        # 获取所有教师节点
        node_list=response.xpath('/html/body/div[1]/div[6]/div/div[2]/div[6]/div/div[2]/div/ul/li/div')
        print(len(node_list))

        # 遍历
        for node in node_list:
            temp={}
            #

            # xpath 方法之后返回是选择器对象列表,,,extract()从选择器中提取数据
            temp['name']=node.xpath('./h3/text()').extract_first()
            temp['title'] = node.xpath('./h4/text()')[0].extract()
            temp['desc'] = node.xpath('./p/text()')[0].extract()
            # print(temp)
            # {'name': [<Selector query='./h3/text()' data='杨老师'>], 'title': [<Selector query='./h4/text()' data='高级讲师'>], 'desc': [<Selector query='./h3/text()' data='杨老师'>]}
            yield temp

 

response的用法

 

  1. 获取响应内容:可以使用response.body属性获取响应的原始内容,通常以字节形式表示。如果需要获取解码后的文本内容,可以使用response.text属性。

  2. 获取响应头:可以使用response.headers属性获取响应头信息。它返回一个Headers对象,你可以通过调用其方法或属性来获取特定的头信息,例如response.headers.get('Content-Type')获取Content-Type头的值。

  3. 获取状态码:可以使用response.status属性获取响应的状态码。

  4. 提取数据:可以使用XPath表达式或CSS选择器从响应中提取感兴趣的数据。Scrapy提供了response.xpath()response.css()方法,你可以传入相应的表达式或选择器来提取数据。例如,response.xpath('//title/text()').get()可以获取网页中的标题文本。

  5. 提取链接:可以使用response.follow()方法跟踪和提取链接。你可以将一个链接作为参数传递给该方法,Scrapy将会发送一个新的请求并返回一个新的response对象。

更多推荐

单片机C语言实例:32、实用密码锁

程序实例1:延时函数#ifndef__DELAY_H__#define__DELAY_H__/*------------------------------------------------uS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~25

【2023】数据挖掘课程设计:基于TF-IDF的文本分类

目录一、课程设计题目基于TF-IDF的文本分类二、课程设计设置1.操作系统2.IDE3.python4.相关的库三、课程设计目标1.掌握数据预处理的方法,对训练集数据进行预处理;2.掌握文本分类建模的方法,对语料库的文档进行建模;3.掌握分类算法的原理,基于有监督的机器学习方法,训练文本分类器。四、课程设计内容1.数据

【LeetCode-中等题】347. 前 K 个高频元素

文章目录题目方法一:优先队列(基于大顶堆实现)方法二:优先队列(基于小顶堆实现,队列只需维护k个元素)题目方法一:优先队列(基于大顶堆实现)PriorityQueue<int[]>queue=newPriorityQueue<>((a,b)->b[1]-a[1]);优先队列按照队列中的数组的第二个元素从大到小排序((a

华为云云耀云服务器L实例评测|华为云云耀云服务器L实例开展性能评测

作者简介:辭七七,目前大二,正在学习C/C++,Java,Python等作者主页:七七的个人主页文章收录专栏:七七的闲谈欢迎大家点赞👍收藏⭐加关注哦!💖💖华为云云耀云服务器L实例开展性能评测云耀云服务器L实例产品核心卖点评测实例测试环境性能评测指标在MySQL评测场景下的评测数据作为一款专为中小企业和开发者群体设

利用亚马逊 云服务器 EC2 和S3免费套餐搭建私人网盘

网盘是一种在线存储服务,提供文件存储,访问,备份,贡献等功能,是我们日常中不可或缺的一种服务。很多互联网公司都为个人和企业提供免费的网盘服务。但这些免费服务都有一些限制,比如限制下载速度,限制文件大小,不能多人同时管理,不能实现一些定制化功能。如果想取消这些限制,就要付费。现在我给大家介绍一种免费,且功能无限制的私人网

线性代数的本质(七)——特征值和特征向量

特征值和特征向量本章特征值和特征向量的概念只在方阵的范畴内探讨。相似矩阵Grant:线性变换对应的矩阵依赖于所选择的基。一般情况下,同一个线性变换在不同基下的矩阵不同。仍然以平面线性变换为例,Grant选用标准坐标系下的基向量i,j\mathbfi,\mathbfji,j,线性变换TTT对应的矩阵为AAA,而Jenni

Unity 场景淡入淡出效果

一.使用Dotween,建议使用我的方式FindObjectOfType<SceneFadeInAndOut>().FadeIn(()=>{Debug.Log("FadeinMenuStartScene");});usingDG.Tweening;usingSystem;usingSystem.Numerics;usi

干洗店洗鞋店线上下单小程序方便快捷

在线下单是干洗店小程序最直接满足顾客使用需求的一项功能,让顾客能够直观了解到不同规格不同方式清洁衣物干洗的价格并且能够直接在线下单,能够极大缩短消费环节,提升下单可能性,管理后台还能够同步记录顾客订单数据,对门店的日常管理也大有帮助。上门取送的功能也是一个十分适合添加在干洗店小程序里的模块,对于时间或者交通不便的用户来

蓝牙技术|多快好省的苹果Find My查找定位方案商:北京自在科技

在电子市场里,各种蓝牙定位器品牌争奇斗艳,例如国外的TileMate和Slim,三星的GalaxySmartTag和GalaxySmartTag+,Chipolo的ONESpot,还有苹果的AirTag等等。而国内也有着不少优秀的品牌,如Nutale的Air和Pro,VanMoof最S3及X3电动单车,Belkin的S

yamot:一款功能强大的基于Web的服务器安全监控工具

关于yamotyamot是一款功能强大的基于Web的服务器安全监控工具,专为只有少量服务器的小型环境构建。yamot只会占用非常少的资源,并且几乎可以在任何设备上运行。该工具适用于Linux或BSD,当前版本暂不支持Windows平台。比如说,广大研究人员可以使用yamot来监控在家运行的RaspberryPi服务器。

leetcode21合并两个有序链表

题目:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]提示:两个链表的节点数目范围是[0,5

热文推荐