广告
返回顶部
首页 > 资讯 > 后端开发 > Python >爬虫框架Scrapy 之(四) ---
  • 403
分享到

爬虫框架Scrapy 之(四) ---

爬虫框架Scrapy 2023-01-31 00:01:34 403人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

  解析后返回可迭代对象 这个对象返回以后就会被爬虫重新接收,然后进行迭代 通过scrapy crawl budejie -o xx.josn/xx.xml/xx.csv 将迭代数据输出到JSON、xml或者csv格式的外部文件中 如果

 

解析后返回可迭代对象

  • 这个对象返回以后就会被爬虫重新接收,然后进行迭代
  • 通过scrapy crawl budejie -o xx.josn/xx.xml/xx.csv 将迭代数据输出到JSON、xml或者csv格式的外部文件中
  • 如果管道开启,则每迭代一次数据就会将其输入到管道中(在settings文件中可以开启管道)

1. budejie.py 文件

 1  def parse(self, response):
 2         # 这个函数是解析函数,它是通过下载来回调,下载器下载完成一个url数据以后就会回调这个函数并且把下载的响应对象通过response参数传递过来
 3         print(response)
4 # 解析response 5 contents = response.xpath("//div[@class='j-r-list']/ul/li") # scrapy中自带xpath和CSS两种解析方法 6 # print(contents) 7 for content in contents: 8 item = {} 9 item["author"] = content.xpath(".//a[@class='u-user-name']/text()").extract()[0] 10 # scrapy的xpath和css方法中返回出来的是一个Selector对象列表,我们需要用extract函数将内容从这个对象中提取出来 11 item["authorImg"] = content.xpath(".//img[@class='u-loGo lazy']/@data-original").extract()[0] 12 item["content"] = content.xpath(".//div[@class='j-r-list-c-desc']/a/text()").extract()[0] 13 item["imgSrc"] = content.xpath(".//img[@class='lazy']/@data-original").extract()[0] 14 # print(item)

15 yield item # 每一个解析函数最后都要返回出去一个可迭代的对象 16 # 这个对象返回以后就会被爬虫重新接收,然后进行迭代 17 # 通过scrapy crawl budejie -o xx.josn/xx.xml/xx.csv 将迭代数据输出到json、xml或者csv格式的外部文件中 18 # 如果管道开启,则每迭代一次数据就会将其输入到管道中(在settings文件中可以开启管道)

开启管道,将迭代的对象传入管道

  • 在setting.py 文件中开启管道(67--69行)
1 ITEM_PIPELINES = {
2    'MyFirstScrapy.pipelines.MyfirstscrapyPipeline': 300,
3     # settings文件中可以配置相关的组件,其中ITEM_PIPELINES就是其中的一种组件(即管道组件),管道组件的值是一个字典,代表可以设置多个值
4     # 字典中的一个键值对就代表着一个管道组件,键代表当前管道组件的位置,值代表当前管道组件的优先级(数字越小优先级越大)
5 
6     # 数据会按照管道优先级,从高向低传递
7     'MyFirstScrapy.pipelines.CSVPipeline': 200
8 
9 }

MyfirstscrapyPipeline 管道类

  • 在pipelines.py 文件中 声明、设置管道类
 1 class MyfirstscrapyPipeline(object):
 2   # 这个类集成自一个普通类,但是如果我们把它加入到管道组件中就变成了一个管道类
 3 
 4     # 一个管道类有以下三个生命周期函数
 5     def open_spider(self,spider):
 6         print("爬虫开启")
 7         print("当前开启的爬虫为:",spider)
 8         # 创建一个Redis链接
 9         self.rds = redis.StrictRedis(host="www.fanjianbo.com",port=6379,db=8)
10 
11     def process_item(self, item, spider):
12       # 当爬虫解析完数据以后,这个方法去迭代返回到管道中数据
13         print("爬虫正在迭代数据...")
14         print("当前正在%s爬虫迭代的数据是:%s"%(spider,item))
15         # 向redis数据库中存入数据
16         self.rds.lpush("budejie",item)
17         return item
18         # 每迭代一次以后,一定将迭代过的数据return出去
19 
20     def close_spider(self,spider):
21         print("爬虫%s关闭!"%spider)
22 
23 
24 
25 # 声明一个管道类,用于写csv数据
26 class CSVPipeline(object):
27     def open_spider(self,spider):
28         # 打开csv文件
29         self.csvfile = open("data.csv","a+",newline='',encoding="utf-8")
30         self.writer = csv.writer(self.csvfile)
31         self.writer.writerow(["author","authorImg","content","imgSrc"])
32 
33     def process_item(self,item,spider):
34         vals = []
35         for k,v in item.items():
36             vals.append(v)
37         self.writer.writerow(vals)
38         return item 
39         # 如果优先级高的管道跌打完数据以后不返回出去,
40         # 这个数据就会销毁,后面的管道就无法使用该数据
41 
42     def close_spider(self,spider):
43         self.csvfile.close()

 post请求

scrapy的下载器有Request和FORMRequest两种,分别用来处理get请求和post请求

import scrapy

class FanyiSpider(scrapy.Spider):
    name = 'fanyi'
    allowed_domains = ['baidu.com']
    # start_urls = ['https://fanyi.baidu.com/sug']
    # scrapy中的下载器有两种:get请求的下载器 和 post请求的下载器
    #       (默认是发起get请求,引擎启动以后首先会从start_urls中提取起始地址,然后直接发起get请求)
    # 如果发起post请求首先要把start_urls注释掉
    # 重写生命周期函数
    def start_requests(self):
        # 这生命周期函数在下载启动之前调用
        print("下载器将要启动...")
        # post的url
        post_url = "Https://fanyi.baidu.com/sug"
        # post参数
        data = {
            "kw":"a"
        }
        # 发起请求   scrapy的下载器有Request和FormRequest两种,分别用来处理get请求和post请求
        yield scrapy.FormRequest(url=post_url,formdata=data,callback=self.parse_post)
        

    # 定义一个函数,用于post请求的回调
    def parse_post(self, response):
        print(response.text)

 

--结束END--

本文标题: 爬虫框架Scrapy 之(四) ---

本文链接: https://www.lsjlt.com/news/182088.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 爬虫框架Scrapy 之(四) ---
      解析后返回可迭代对象 这个对象返回以后就会被爬虫重新接收,然后进行迭代 通过scrapy crawl budejie -o xx.josn/xx.xml/xx.csv 将迭代数据输出到json、xml或者csv格式的外部文件中 如果...
    99+
    2023-01-31
    爬虫 框架 Scrapy
  • 爬虫之scrapy框架
      一、认识scrapy框架   何为框架,就相当于一个封装了很多功能的结构体,它帮我们把主要的结构给搭建好了,我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据,提取数据的框架,我们熟知爬虫总共有四大部分,请求、响应、...
    99+
    2023-01-30
    爬虫 框架 scrapy
  • python爬虫之scrapy框架详解
    1.在pycharm下安装scrapy函数库 2.将安装好scrapy函数库下的路径配置到系统path的环境变量中 3.打开cmd终端输入:scrapy.exe检查是否安装成功 ...
    99+
    2022-11-12
  • Python3 爬虫 scrapy框架
    上次用requests写的爬虫速度很感人,今天打算用scrapy框架来实现,看看速度如何。 第一步,安装scrapy,执行一下命令 pip install Scrapy 第二步,创建项目,执行一下命令 scrapy startproje...
    99+
    2023-01-31
    爬虫 框架 scrapy
  • 爬虫---scrapy爬虫框架(详细+实战)
    ​ 活动地址:CSDN21天学习挑战赛 爬虫---scrapy爬虫框架 爬虫---scrapy爬虫框架一、简介1、基本功能2、架构3、scrapy项目的结构 二、scrapy环境搭...
    99+
    2023-10-27
    爬虫 scrapy 数据挖掘 python
  • Python爬虫基础讲解之scrapy框架
    网络爬虫 网络爬虫是指在互联网上自动爬取网站内容信息的程序,也被称作网络蜘蛛或网络机器人。大型的爬虫程序被广泛应用于搜索引擎、数据挖掘等领域,个人用户或企业也可以利用爬虫收集对自身有价值的数据。 一个网络爬虫程序的基...
    99+
    2022-06-02
    Python scrapy框架 Python爬虫框架
  • Python爬虫框架Scrapy简介
    在爬虫的路上,学习scrapy是一个必不可少的环节。也许有好多朋友此时此刻也正在接触并学习scrapy,那么很好,我们一起学习。开始接触scrapy的朋友可能会有些疑惑,毕竟是一个框...
    99+
    2022-11-11
  • Python爬虫框架Scrapy 学习
    开发环境PyCharm目标网站和上一次一样,可参考:http://dingbo.blog.51cto.com/8808323/1597695 但是这次不是在单个文件中运行,而是创建一个scrapy项目1.使用命令行工具创建scrapy项目的...
    99+
    2023-01-31
    爬虫 框架 Python
  • Python爬虫框架之Scrapy中Spider的用法
    Scrapy中Spider的用法 Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。换句话说,Spider就是您定义爬取的动作...
    99+
    2022-06-02
    Spider的用法 Python Scrapy框架
  • python爬虫入门之Scrapy框架怎么用
    这篇文章将为大家详细讲解有关python爬虫入门之Scrapy框架怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,P...
    99+
    2023-06-14
  • python实战之Scrapy框架爬虫爬取微博热搜
    前言:大概一年前写的,前段时间跑了下,发现还能用,就分享出来了供大家学习,代码的很多细节不太记得了,也尽力做了优化。 因为毕竟是微博,反爬技术手段还是很周全的,怎么绕过反爬的话要在这...
    99+
    2022-11-12
  • Python爬虫框架-scrapy的使用
    Scrapy Scrapy是纯python实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。 Scrapy使用了Twisted异步网络框架来处理网络通讯,可以加快我们的下载速度,并且包含了...
    99+
    2022-06-02
    Python爬虫框架scrapy使用 Python scrapy使用
  • Python爬虫框架scrapy入门指
    想爬点数据来玩玩, 我想最方便的工具就是Python scrapy了。 这框架把采集需要用到的功能全部封装好了,只要写写采集规则,其他的就交给框架去处理,非常方便,没有之一,不接受反驳。:) 网上学习资源非常丰富,我这里介绍下我的学习方法...
    99+
    2023-01-31
    爬虫 框架 入门
  • scrapy爬虫框架怎么使用
    这篇“scrapy爬虫框架怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“scrapy爬虫框架怎么使用”文章吧。一、s...
    99+
    2023-06-27
  • 爬虫Scrapy框架之css选择器如何使用
    这篇文章将为大家详细讲解有关爬虫Scrapy框架之css选择器如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css选择器介绍在css中选择器是一种模式,用于选择需要添加样式的元素,css对html...
    99+
    2023-06-02
  • Python之Scrapy爬虫框架安装及使用详解
    题记:早已听闻python爬虫框架的大名。近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享。有表述不当之处,望大神们斧正。 一、初窥Scrapy Scrapy是一个为了爬取网站数据,提取结构...
    99+
    2022-06-04
    爬虫 详解 框架
  • 开源python网络爬虫框架Scrapy
    介绍:所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的HTML数据。不过由于一个网站的网页很多,而我们又不可能事先知道所有网页的URL地址,所以,如何保证我们抓取到了网站的所...
    99+
    2023-01-31
    爬虫 开源 框架
  • 关于Python网络爬虫框架scrapy
    目录scrapy爬虫框架介绍scrapy爬虫框架结构“5+2”结构:requests库和scrapy库比较scrapy的常用命令scrapy爬虫框架介绍 sc...
    99+
    2023-05-17
    Python 爬虫 Python 爬虫框架 scrapy框架
  • 网络爬虫框架Scrapy怎么用
    这篇文章将为大家详细讲解有关网络爬虫框架Scrapy怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛...
    99+
    2023-06-27
  • 如何入门Python Scrapy爬虫框架
    如何入门Python Scrapy爬虫框架,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Scrapy概述Scrapy是Python开发的一个非常流行的网络爬虫框架,可以用来...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作