爬虫框架scrapy基本原理

这篇具有很好参考价值的文章主要介绍了爬虫框架scrapy基本原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、scrapy介绍和快速使用

scrapy是python的爬虫框架,类似于django(python的web框架)。

安装:

  • Mac、Linux
    执行pip3 install scrapy,不存在任何问题
  • Windows
    执行pip3 install scrapy,如果安装失败,执行下面步骤:
    (1)安装wheel(为支持通过文件安装软件):pip3 install wheel(wheel官网)
    (2)安装lxml:pip3 install lxml
    (3)安装pyopenssl:pip3 install pyopenssl
    (4)下载并安装pywin32(pywin32官网 或 github地址)
    (5)下载twisted的wheel文件(twisted官网),执行pip3 install 下载目录\Twisted-17.9.0-cp36-cp36m-win_amd64.whl
    (6)最后执行pip3 install scrapy

注:twisted是一个流行的事件驱动的python网络框架,性能很高的网络框架。

使用:
1 使用命令行创建scrapy项目

scrapy startproject 项目名

2 创建爬虫(相当于django创建app)

scrapy genspider 爬虫名 爬虫地址

3 运行爬虫

scrapy crawl 爬虫名

4 使用IDE打开爬虫项目(项目根目录)

5 目录结构

myfirst_crawl  # 项目名
    myfirst_crawl # 文件夹
        -spiders # 文件夹(所有的爬虫都放在下面,一个py文件就是一个爬虫)
        -cnblogs.py  # 爬虫
    middlewares.py  # 以后中间件写在这里
    pipelines.py  # 以后存数据
    settings.py  # 配置文件
    scrapy.cfg  # 项目部署相关
    items.py  # 相当于models.py

二、scrapy框架原理

爬虫框架scrapy基本原理,爬虫,爬虫,scrapy
五大组件
spider:爬虫,我们写代码的地方,爬取网址和解析数据
engine:引擎,大总管,掌管数据的流向(我们不管)
scheduler:调度器,负责调度哪个地址先爬取,哪个后爬取(深度优先,广度优先)
downloader:下载器,负责真正的下载(twisted,异步)
pipeline:管道,存储数据的地方(文件,mysql、redis…)

两大中间件
爬虫中间件:爬虫和引擎之间
下载中间件:引擎和下载器之间(用的多)

三、scrapy解析数据

1.执行命令
直接敲这个名令:scrapy gensipder 名字 地址,等同于新建一个py文件
执行爬虫,不打印日志:scrapy crawl cnblogs --nolog

使用脚本运行爬虫:
项目根目录下创建main.py

# 脚本执行爬虫,不用使用命令了
from scrapy.cmdline import execute
execute(['scrapy','crawl','cnblogs','--nolog'])

2.response对象的css方法和xpath方法
css中写css选择器,xpath中写xpath选择器

语法:
-xpath取文本内容

'.//a[contains(@class,"link-title")]/text()'

-xpath取属性

'.//a[contains(@class,"link-title")]/@href'

-css取文本

'a.link-title::text'

-css取属性

'img.image-scale::attr(src)'

两个方法:

.extract_first()  # 取一个
.extract()        # 取所有

spiders目录下爬虫文件参数:

import scrapy
class CnblogsSpider(scrapy.Spider):
    name = 'cnblogs'   # 爬虫名
    allowed_domains = ['www.cnblogs.com'] # 允许爬取的域
    start_urls = ['http://www.cnblogs.com/'] # 爬取的起始地址

    def parse(self, response):  # 响应对象response,从中解析出想要的数据
        print('--------------',response)
        print(response.text)  # bs4解析

示例:
spiders目录下的cnblogs.py文件文章来源地址https://www.toymoban.com/news/detail-553413.html

import scrapy
class CnblogsSpider(scrapy.Spider):
    name = 'cnblogs'   # 爬虫名
    allowed_domains = ['www.cnblogs.com'] # 允许爬取的域
    start_urls = ['http://www.cnblogs.com/'] # 爬取的起始地址

    def parse(self, response):  # 响应对象response,从中解析出想要的数据
        # print('--------------',response)
        # print(response.text)  # bs4解析
        
        ############ css ###########
        # article_list=response.css('.post-item')  # 查出所有类名为post-item的标签,取多条
        # # print(len(article_list))
        # for article in article_list:
        #     title=article.css('div.post-item-text>a::text').extract_first()  # 取一条
        #     # article.css('section>div>a::text')
        #     href=article.css('div.post-item-text>a::attr(href)').extract_first()
        #     author=article.css('a.post-item-author>span::text').extract_first()
        #     desc=article.css('p.post-item-summary::text').extract_first()
        #
        #     # 取不到就是None
        #     photo=article.css('p.post-item-summary>a>img::attr(src)').extract_first()
        #
        #
        #     print(title)
        #     print(href)
        #     print(author)
        #     print(desc)
        #     print(photo)
        #     print('----------')

        ########### xpath ########### 
        article_list = response.xpath('//*[@class="post-item"]')  # 查出所有类名为post-item的标签,取多条
        # print(len(article_list))
        for article in article_list:
            # 注意:使用 . 从当前标签下找
            title = article

到了这里,关于爬虫框架scrapy基本原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python爬虫】14.Scrapy框架讲解

    前两关,我们学习了能提升爬虫速度的进阶知识——协程,并且通过项目实操,将协程运用于抓取薄荷网的食物数据。 可能你在体验开发一个爬虫项目的完整流程时,会有这样的感觉:原来要完成一个完整的爬虫程序需要做这么多琐碎的工作。 比如,要导入不同功能的模块

    2024年02月09日
    浏览(49)
  • 爬虫——Scrapy框架 (初步学习+简单案例)

    目录 1.scrapy基本用途: 2.结构: 3.scrapy文件结构(示例:game) 4.scrapy安装 二、 简单实例 1.创建项目(打开命令窗口) 2.打开项目  一、Scrapy框架 1.scrapy基本用途: Scrapy是一个快速、高效率的网络爬虫框架,用于抓取web站点并从页面中提取结构化的数据。 Scrapy被广泛用于数据

    2024年02月12日
    浏览(48)
  • 爬虫框架有Scrapy、BeautifulSoup、Selenium

    爬虫框架有Scrapy、BeautifulSoup、Selenium BeautifulSoup比Scrapy相对容易学习。 Scrapy的扩展,支持和社区比BeautifulSoup更大。 Scrapy应被视为蜘蛛,而BeautifulSoup则是Parser。 1.爬虫基础知识 在开始Python爬虫之前,需要先掌握一些基础知识。首先了解一下HTTP协议,掌握常见的请求方法和状

    2024年02月07日
    浏览(42)
  • 网络爬虫(Python:Selenium、Scrapy框架;爬虫与反爬虫笔记)

    Selenium是一个模拟浏览器浏览网页的工具,主要用于测试网站的自动化测试工具。 Selenium需要安装浏览器驱动,才能调用浏览器进行自动爬取或自动化测试,常见的包括Chrome、Firefox、IE、PhantomJS等浏览器。 注意:驱动下载解压后,置于Python的安装目录下;然后将Python的安装目

    2024年01月18日
    浏览(60)
  • python爬虫之Scrapy框架--保存图片(详解)

    目录 Scrapy 使用ImagePipeline 保存图片 使用图片管道  具体步骤 安装相关的依赖库 创建Scrapy项目 配置settings.py   定义Item  编写Spider 运行Spider Scrapy 自定义ImagePipeline 自定义图片管道 Scrapy提供了一个 ImagePipeline ,用来下载图片这条管道,图片管道 ImagesPipeline  提供了方便并具有

    2024年02月11日
    浏览(45)
  • 使用Scrapy框架集成Selenium实现高效爬虫

    在网络爬虫的开发中,有时候我们需要处理一些JavaScript动态生成的内容或进行一些复杂的操作,这时候传统的基于请求和响应的爬虫框架就显得力不从心了。为了解决这个问题,我们可以使用Scrapy框架集成Selenium来实现高效的爬虫。 Scrapy是一个使用Python编写的开源网络爬虫框

    2024年02月09日
    浏览(44)
  • Scrapy:Python中强大的网络爬虫框架

    在当今信息爆炸的时代,从互联网上获取数据已经成为许多应用程序的核心需求。Scrapy是一款基于Python的强大网络爬虫框架,它提供了一种灵活且高效的方式来提取、处理和存储互联网上的数据。本文将介绍Scrapy的主要特性和优势,以及如何使用它来构建强大的网络爬虫。

    2024年02月19日
    浏览(62)
  • Python爬虫——scrapy_工作原理

    引擎向spiders要url 引擎把将要爬取的url给调度器 调度器会将url生成的请求对象放入到指定的队列中 从队列中出队一个请求 引擎将请求交给下载器进行处理 下载器发送请求获取互联网数据 下载器将数据返回给引擎 引擎将数据再次给到spiders spiders通过xpath解析该数据,得到数据

    2024年02月12日
    浏览(44)
  • Scrapy爬虫框架集成Selenium来解析动态网页

    当前网站普遍采用了javascript 动态页面,特别是vue与react的普及,使用scrapy框架定位动态网页元素十分困难,而selenium是最流行的浏览器自动化工具,可以模拟浏览器来操作网页,解析元素,执行动作,可以处理动态网页,使用selenium处理1个大型网站,速度很慢,而且非常耗资

    2024年02月15日
    浏览(51)
  • Python爬虫开发:Scrapy框架与Requests库

    Python爬虫开发中有两个非常流行的工具:Scrapy框架和Requests库。它们各自有自己的优点和适用场景。 Scrapy Scrapy是一个为了爬取网站并提取结构化数据而编写的应用框架,可以非常方便地实现网页信息的抓取。Scrapy提供了多种可配置、可重用的组件,如调度器、下载器、爬虫和

    2024年02月19日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包