利用Scrapy进行数据爬取

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

目录

爬虫框架Scrapy简介

Scrapy爬取步骤

Step1:安装Scrapy

Step2:新建项目

Step3:创建爬虫文件

Step4:编写爬虫代码

Step5:运行爬虫项目


爬虫框架Scrapy简介

Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。

Scrapy 是一个功能非常强大的爬虫框架, 它不仅可以用于便捷地构建HTTP请求, 还有强
大的选择器用于快速、方便地解析和回应HTTP 响应。Scrapy 的优点可以简单概括为以下5点:

(1)Scrapy 使用TwisSted 异步网络框S架处理S网络通信, 加快了爬取数据的速度。
(2)Scrapy S具有强大的统计及日志系统, 方便查看返回内容以及统计信息。
(3)Scrapy 可同时采集多个不同网页的数据。
(4)Scrapy 支持Shell,方便独立调试。
(5)Scrapy 运用管道的方式将数据存入数据库, 操作灵活, 可以保存多种形式的数据。

利用Scrapy进行数据爬取
Scrapy整体架构图

 

Scrapy爬取步骤

使用Scrapy进行爬取的步骤如下:

Step1:安装Scrapy

首先,安装Scrapy(此处使用conda安装,也可以使用pip);

conda install scrapy

Step2:新建项目

scrapy startproject projectname
cd projectname

 创建的目录结构如下:

利用Scrapy进行数据爬取

Step3:创建爬虫文件

scrapy genspider scrapytest api.github.com

Step4:编写爬虫代码

以爬取PaddlePaddle/PaddleOCR项目的commmits记录为例,代码如下:

import json
import scrapy


class CommitsSpider(scrapy.Spider):
    name = 'commits'
    allowed_domains = ['api.github.com']
    start_urls = ['https://api.github.com/repos/PaddlePaddle/PaddleOCR/commits?&page=1&per_page=100']
    current_page = 1

    def parse(self, response):
        # 转换为python中的字典
        result = json.loads(response.text)
        # content_list = []
        for data in result:
            Author = data.get('commit').get('author')
            Committer = data.get('commit').get('committer')
            Message = data.get('commit').get('message')
            dict = {
                'Author': Author,
                'Committer': Committer,
                'Message': Message,
            }
            # scrapy.Request()
            # content_list.append(dict)
            yield dict

        # print(content_list)
        # return content_list
        if result:
            self.current_page += 1
            next_url = "https://api.github.com/repos/PaddlePaddle/PaddleOCR/commits?&page=%d&per_page=100" % (
                self.current_page)
            yield scrapy.Request(url=next_url, callback=self.parse)
        pass

Step5:运行爬虫项目

scrapy crawl issues -o issues.json

获取到的json数据如下(可以根据需要自行筛选字段):文章来源地址https://www.toymoban.com/news/detail-499348.html

[{"User": "andyjpaddle", "State": "closed", "Number": 8548, "CreatedAt": "2022-12-05T11:51:45Z", "UpdatedAt": "2022-12-05T11:52:11Z", "ClosedAt": "2022-12-05T11:52:11Z", "MergedAt": "2022-12-05T11:52:11Z", "Title": "[doc] fix dead link", "Body": "cp https://github.com/PaddlePaddle/PaddleOCR/pull/8547"},
{"User": "andyjpaddle", "State": "closed", "Number": 8547, "CreatedAt": "2022-12-05T11:42:47Z", "UpdatedAt": "2022-12-05T11:53:44Z", "ClosedAt": "2022-12-05T11:53:44Z", "MergedAt": "2022-12-05T11:53:44Z", "Title": "[doc] Fix dead link", "Body": null},
{"User": "WenmuZhou", "State": "closed", "Number": 8506, "CreatedAt": "2022-12-01T06:41:18Z", "UpdatedAt": "2022-12-01T08:02:48Z", "ClosedAt": "2022-12-01T08:02:47Z", "MergedAt": "2022-12-01T08:02:47Z", "Title": "mv Polygon import into func", "Body": null},
{"User": "andyjpaddle", "State": "closed", "Number": 8500, "CreatedAt": "2022-11-30T11:40:17Z", "UpdatedAt": "2022-12-05T11:29:58Z", "ClosedAt": "2022-11-30T11:41:48Z", "MergedAt": "2022-11-30T11:41:47Z", "Title": "[doc] add en doc", "Body": "cp"},
{"User": "andyjpaddle", "State": "closed", "Number": 8497, "CreatedAt": "2022-11-30T11:20:26Z", "UpdatedAt": "2022-12-05T11:29:56Z", "ClosedAt": "2022-11-30T11:35:50Z", "MergedAt": "2022-11-30T11:35:50Z", "Title": "[doc] add finetune en doc", "Body": "add finetune en doc"},
{"User": "LDOUBLEV", "State": "closed", "Number": 8491, "CreatedAt": "2022-11-30T04:43:22Z", "UpdatedAt": "2022-11-30T04:43:34Z", "ClosedAt": "2022-11-30T04:43:34Z", "MergedAt": "2022-11-30T04:43:34Z", "Title": "[bug] fix config", "Body": null}]

到了这里,关于利用Scrapy进行数据爬取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Python爬虫之Scrapy框架系列(21)——重写媒体管道类实现保存图片名字自定义及多页爬取

    spider文件中要拿到图片列表并yield item; item里需要定义特殊的字段名:image_urls=scrapy.Field(); settings里设置IMAGES_STORE存储路径,如果路径不存在,系统会帮助我们创建; 使用默认管道则在s

    2024年02月10日
    浏览(87)
  • 网络爬虫丨基于scrapy+mysql爬取博客信息并保存到数据库中

    本期内容 :基于scrapy+mysql爬取博客信息并保存到数据库中 实验需求 anaconda丨pycharm python3.11.4 scrapy mysql 项目下载地址:https://download.csdn.net/download/m0_68111267/88740730 本次实验实现了:使用Scrapy框架爬取博客专栏的目录信息并保存到MySQL数据库中,实验主要涉及到Python的爬虫技术以

    2024年01月17日
    浏览(46)
  • 爬虫学习笔记-scrapy链接提取器爬取读书网链接写入MySQL数据库

    1.终端运行scrapy startproject scrapy_read,创建项目 2.登录读书网,选择国学(随便点一个) 3.复制链接(后面修改为包括其他页)  4.创建爬虫文件,并打开  5.滑倒下方翻页处,右键2,点击检查,查看到a标签网址,复制 6.修改爬虫文件规则allow(正则表达式),\\\'d\\\'表示数字,\\\'+\\\'表示多个,\\\'.\\\'使\\\'.\\\'生效

    2024年02月19日
    浏览(48)
  • 爬虫项目实战:利用基于selenium框架的爬虫模板爬取豆瓣电影Top250

    👋 Hi, I’m @货又星 👀 I’m interested in … 🌱 I’m currently learning … 💞 I’m looking to collaborate on … 📫 How to reach me … README 目录(持续更新中) 各种错误处理、爬虫实战及模板、百度智能云人脸识别、计算机视觉深度学习CNN图像识别与分类、PaddlePaddle自然语言处理知识图谱、

    2024年02月04日
    浏览(49)
  • scrapy爬虫爬取多网页内容

    摘要 :此案例是爬取目标网站( https://tipdm.com/ )的 新闻中心 板块的 公司新闻 中所有新闻的标题、发布时间、访问量和新闻的文本内容。 我使用的是 Anaconda prompt 我们使用如下命令创建scrapy项目: scrapy startproject spider_name 爬虫路径 spider_name 是项目的名字 爬虫路径 就是项目

    2023年04月21日
    浏览(40)
  • Python爬虫进阶:使用Scrapy库进行数据提取和处理

    在我们的初级教程中,我们介绍了如何使用Scrapy创建和运行一个简单的爬虫。在这篇文章中,我们将深入了解Scrapy的强大功能,学习如何使用Scrapy提取和处理数据。 在Scrapy中,提取数据主要通过Selectors来完成。Selectors基于XPath或CSS表达式的查询语言来选取HTML文档中的元素。你

    2024年02月09日
    浏览(49)
  • 爬虫学习笔记-scrapy爬取电影天堂(双层网址嵌套)

      1.终端运行scrapy startproject movie,创建项目 2.接口查找  3.终端cd到spiders,cd scrapy_carhome/scrapy_movie/spiders,运行 scrapy genspider mv https://dy2018.com/ 4.打开mv,编写代码,爬取电影名和网址 5.用爬取的网址请求,使用meta属性传递name ,callback调用自定义的parse_second 6.导入ScrapyMovieItem,将movie对象

    2024年02月19日
    浏览(53)
  • 网络爬虫丨基于scrapy+mysql爬取博客信息

    本期内容 :基于scrapy+mysql爬取博客信息并保存到数据库中 实验需求 anaconda丨pycharm python3.11.4 scrapy mysql 项目下载地址:https://download.csdn.net/download/m0_68111267/88740730 本次实验实现了:使用Scrapy框架爬取博客专栏的目录信息并保存到MySQL数据库中,实验主要涉及到Python的爬虫技术以

    2024年03月18日
    浏览(56)
  • python爬虫实战 scrapy+selenium爬取动态网页

    最近学习了scrapy爬虫框架,想要找个目标练练手。由于现在很多网页都是动态的,因此还需要配合selenium爬取。本文旨在记录这次学习经历,如有疑问或不当之处,可以在评论区指出,一起学习。 对scrapy不了解的同学可以阅读这篇文章 爬虫框架 Scrapy 详解,对scrapy框架介绍的

    2024年02月07日
    浏览(83)
  • 使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站

    本次测试案例参考厦门大学数据库实验室 链接: https://dblab.xmu.edu.cn/blog/3937/ 在PyCharm中新建一个名称为“scrapyProject”的工程,如下图所示,Python解释器就选择我们之前已经安装好的 本次测试环境为 Python3.7.6 在“scrapyProject”工程底部打开Terminal窗口(如下图所示),在命令提示

    2024年02月11日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包