当前位置: 首页 > article >正文

Django-Dynamic-Scraper入门教程:从零开始构建你的第一个动态爬虫

Django-Dynamic-Scraper入门教程从零开始构建你的第一个动态爬虫【免费下载链接】django-dynamic-scraperCreating Scrapy scrapers via the Django admin interface项目地址: https://gitcode.com/gh_mirrors/dj/django-dynamic-scraperDjango-Dynamic-Scraper是一个强大的工具它允许你通过Django管理界面创建Scrapy爬虫无需编写大量代码即可实现网页数据的抓取和存储。本教程将带你逐步了解如何使用这个工具从零开始构建你的第一个动态爬虫项目。准备工作安装与环境配置 ️系统要求在开始之前请确保你的系统满足以下要求Python 3.5、3.6或3.7实验性支持Django 1.11暂不支持2.0版本Scrapy 1.5scrapy-djangoitem 1.1Python JSONPath RW 1.4Python-Future 0.17.x如果你需要使用调度机制还需安装django-celery 3.2.1如需处理图片需安装Pillow库6.x版本。安装步骤最简便的安装方式是使用pippip install django-dynamic-scraper如果你需要手动安装可以克隆项目仓库git clone https://gitcode.com/gh_mirrors/dj/django-dynamic-scraper.git . cd django-dynamic-scraper pip install -r requirements.txt python setup.py install安装完成后在你的Django项目设置中添加dynamic_scraper到INSTALLED_APPS。Scrapy配置创建Scrapy配置文件scrapy.cfg[settings] default open_news.scraper.settings [deploy:scrapyd1] url http://localhost:6800/ project open_news并在scraper目录下创建settings.pyimport os PROJECT_ROOT os.path.abspath(os.path.dirname(__file__)) os.environ.setdefault(DJANGO_SETTINGS_MODULE, example_project.settings) BOT_NAME open_news SPIDER_MODULES [dynamic_scraper.spiders, open_news.scraper,] USER_AGENT %s/%s % (BOT_NAME, 1.0) ITEM_PIPELINES { dynamic_scraper.pipelines.ValidationPipeline: 400, open_news.scraper.pipelines.DjangoWriterPipeline: 800, }创建Django模型 定义数据模型在Django项目中我们需要创建两个模型类一个用于存储抓取的数据另一个作为引用类。以新闻网站为例from django.db import models from dynamic_scraper.models import Scraper, SchedulerRuntime from scrapy_djangoitem import DjangoItem class NewsWebsite(models.Model): name models.CharField(max_length200) url models.URLField() scraper models.ForeignKey(Scraper, blankTrue, nullTrue, on_deletemodels.SET_NULL) scraper_runtime models.ForeignKey(SchedulerRuntime, blankTrue, nullTrue, on_deletemodels.SET_NULL) def __str__(self): return self.name class Article(models.Model): title models.CharField(max_length200) news_website models.ForeignKey(NewsWebsite) description models.TextField(blankTrue) url models.URLField(blankTrue) checker_runtime models.ForeignKey(SchedulerRuntime, blankTrue, nullTrue, on_deletemodels.SET_NULL) def __str__(self): return self.title class ArticleItem(DjangoItem): django_model ArticleNewsWebsite模型存储网站信息和抓取器配置Article模型存储抓取的新闻数据ArticleItem则用于Scrapy与Django的连接。配置抓取对象类 在管理界面定义抓取对象完成模型创建和数据库同步后Django管理界面会显示新的模型。首先需要定义要抓取的对象类及其属性登录Django管理界面你会看到类似以下的界面创建一个新的Scraped Obj Class为Article模型定义要抓取的属性基础属性BASE用于定位列表页中的每个条目详情页URLDETAIL_PAGE_URL文章的链接标准属性STANDARD标题和描述等内容确保将URL字段设置为ID字段以防止重复条目。创建抓取器 ️配置XPath和处理器创建一个新的Scraper选择之前定义的Scraped Obj Class为每个属性添加Scraper Element定义XPath和处理方式基础元素使用//td[classl_box]定位新闻条目标题从详情页抓取XPath为//h1[idfirstHeading]/text()描述从列表页抓取XPath为p/span[classl_summary]/text()URL使用span[classl_title]/a/href并添加预处理器补全域名添加请求页面类型配置主页面和详情页的请求设置连接Scrapy与Django 创建Spider和Pipeline创建spiders.py定义爬虫from dynamic_scraper.spiders.django_spider import DjangoSpider from open_news.models import NewsWebsite, Article, ArticleItem class ArticleSpider(DjangoSpider): name article_spider def __init__(self, *args, **kwargs): self._set_ref_object(NewsWebsite, **kwargs) self.scraper self.ref_object.scraper self.scrape_url self.ref_object.url self.scheduler_runtime self.ref_object.scraper_runtime self.scraped_obj_class Article self.scraped_obj_item_class ArticleItem super(ArticleSpider, self).__init__(self, *args, **kwargs)创建pipelines.py处理抓取结果import logging from django.db.utils import IntegrityError from scrapy.exceptions import DropItem from dynamic_scraper.models import SchedulerRuntime class DjangoWriterPipeline(object): def process_item(self, item, spider): if spider.conf[DO_ACTION]: try: item[news_website] spider.ref_object checker_rt SchedulerRuntime(runtime_typeC) checker_rt.save() item[checker_runtime] checker_rt item.save() spider.action_successful True except IntegrityError as e: spider.log(str(e), logging.ERROR) raise DropItem(Missing attribute.) return item运行和测试爬虫 执行抓取命令在命令行中运行以下命令启动爬虫scrapy crawl article_spider -a id1 -a do_actionyes其中id1是你创建的NewsWebsite对象的ID。成功运行后你将看到类似以下的输出查看抓取结果返回Django管理界面你将看到抓取的文章已经存储在数据库中高级功能调度和监控 ⏱️设置定期抓取Django-Dynamic-Scraper支持使用Celery设置定期抓取任务。在管理界面中你可以配置调度运行时监控抓取状态管理界面提供了监控部分显示抓取器的运行状态和日志总结 通过本教程你已经了解了如何使用Django-Dynamic-Scraper构建动态爬虫的基本流程。从安装配置到创建模型再到定义抓取规则和运行爬虫这个工具简化了网页数据抓取的过程让你无需编写大量代码即可实现强大的抓取功能。要深入了解更多高级功能如处理JavaScript渲染的页面、使用自定义处理器等请参考项目的官方文档。现在你可以尝试为不同的网站创建自己的抓取器探索更多可能性【免费下载链接】django-dynamic-scraperCreating Scrapy scrapers via the Django admin interface项目地址: https://gitcode.com/gh_mirrors/dj/django-dynamic-scraper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

Django-Dynamic-Scraper入门教程:从零开始构建你的第一个动态爬虫

Django-Dynamic-Scraper入门教程:从零开始构建你的第一个动态爬虫 【免费下载链接】django-dynamic-scraper Creating Scrapy scrapers via the Django admin interface 项目地址: https://gitcode.com/gh_mirrors/dj/django-dynamic-scraper Django-Dynamic…...

go-wkhtmltopdf在AWS Lambda中的应用:无服务器PDF生成方案

go-wkhtmltopdf在AWS Lambda中的应用:无服务器PDF生成方案 【免费下载链接】go-wkhtmltopdf Golang commandline wrapper for wkhtmltopdf 项目地址: https://gitcode.com/gh_mirrors/go/go-wkhtmltopdf go-wkhtmltopdf是一个Golang命令行包装器,…...

【亲测免费】 IBAN.js - 国际银行账号验证与格式化工具

IBAN.js - 国际银行账号验证与格式化工具 【免费下载链接】iban.js IBAN & BBAN validation, formatting and conversion in Javascript 项目地址: https://gitcode.com/gh_mirrors/ib/iban.js 1. 项目基础介绍与主要编程语言 IBAN.js 是一个开源的JavaScript库&am…...

ARM64架构手动编译libtorch,安装MKL/oneDNN加速模型推理,详细流程!

目录 前言: 一、依赖环境 二、下载pytorch源码 三、下载oneDNN源码 三、编译libtorch 四、整理libtorch 五、C调用libtorch 前言: libtorch官方并没有给出ARM64架构的安装文件,在ARM64环境下,libtorch需要手动编译。编译完成…...

简易CPU设计入门:内存读写(五)

专栏导航 上一篇:简易CPU设计入门:内存读写(四) 专栏目录 下一篇:无 项目代码下载 请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么&#xf…...

JAVA软件开发岗位高频技术面筋(持续更新)

一.jdk8 特性 1.Lambda表达式 使用匿名内部类处理,减少内部类的编写,提高系统可读性。支持函数式编程。 2.Stream API 流操作数据时,外部变量声明为final,确保变量在Lambda表达式中不被修改。 支持并行流,实现原理多线…...

roop-unleashed 项目亮点解析

roop-unleashed 项目亮点解析 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 1. 项目的基础介绍 roop-unleashed 是一个开源项目,旨在提供一个…...

roop-unleashed 的项目扩展与二次开发

roop-unleashed 的项目扩展与二次开发 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 1、项目的基础介绍 roop-unleashed 是一个开源项目,旨在…...

开源项目 Adobe-GenP 亮点详解

开源项目 Adobe-GenP 亮点详解 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 1. 项目的基础介绍 Adobe-GenP 是一个开源项目,旨在为用户提供一个高效的…...

开源项目 Adobe-GenP 的扩展与二次开发潜力

开源项目 Adobe-GenP 的扩展与二次开发潜力 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 1. 项目的基础介绍 Adobe-GenP 是一个开源项目,旨在提供一种…...

【跟韩工学Ubuntu第2课】 第2章 磁盘、LVM、文件系统与扩容备份-001篇】

文章目录《Linux系统管理与服务配置》第2章 磁盘、LVM、文件系统与扩容备份2.1 磁盘基础:分区与分区表2.2 实战1:磁盘分区实操2.3 实战2:LVM逻辑卷管理2.4 实战3:文件系统管理2.5 实战4:磁盘扩容与数据备份2.6 课后习题…...

AI系列:AI时代必懂的基础概念扫盲

目录 第一篇章:核心概念三兄弟 1. 人工智能(AI):让机器模仿人的智能 2. 机器学习(ML):实现AI的一种方法 3. 深度学习(DL):机器学习中非常强大的一种技术 …...

linux系统 Ventoy 制作U启

比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。 目录 1. 下载 Ventoy 2. 解压压缩包 3. 插入U盘并确认设备名 4. 安装Ventoy到U盘(会格式化U盘) 5. 复制ISO文件 6. 使用启动盘 Ventoy的优点 1. 下载 Ventoy wget https://github.com/v…...

Webpack5 处理 CSS文件

1、背景Webpack 本身仅能处理Js文件,无法识别CSS文件及代码。因此需在webpack.config.js文件中进行单独处理。2、基础框架搭建1、搭建简单项目框架执行 npm install -y 指令,生成 package.json文件执行 npm install webpack webpack-cli html-webpack-pl…...

华为OD机试双机位C卷-最佳植树距离(C/C++/Py/Java/Js/Go)

最佳植树距离 华为OD机试真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解 华为OD上机考试2026双机位C卷 华为OD机试双机位C卷 200分题型 题目描述 按照环保公司要求,小明需要在沙化严重的地区进行植树防沙工作,初步目标是种植一条直线的树带…...

jqdatasdk与Python量化策略结合:构建你的第一个交易模型

jqdatasdk与Python量化策略结合:构建你的第一个交易模型 【免费下载链接】jqdatasdk 简单易用的量化金融数据包(easy utility for getting financial market data of China) 项目地址: https://gitcode.com/gh_mirrors/jq/jqdatasdk jqdatasdk是一款简单易用…...

Awesome Programming for Kids揭秘:从Scratch Jr.到Python Turtle的完美进阶路径

Awesome Programming for Kids揭秘:从Scratch Jr.到Python Turtle的完美进阶路径 【免费下载链接】awesome-programming-for-kids A curated list of resources for teaching kids programming. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-programmin…...

Zygisk API完全指南:用NeoZygisk开发模块的5个关键步骤

Zygisk API完全指南:用NeoZygisk开发模块的5个关键步骤 【免费下载链接】NeoZygisk Zygote injection with ptrace 项目地址: https://gitcode.com/gh_mirrors/ne/NeoZygisk NeoZygisk是一个基于ptrace的Zygote注入框架,它允许开发者构建模块并在…...

Awesome Programming for Kids深度解析:从玩具机器人到代码世界的桥梁

Awesome Programming for Kids深度解析:从玩具机器人到代码世界的桥梁 【免费下载链接】awesome-programming-for-kids A curated list of resources for teaching kids programming. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-programming-for-kids…...

multierr与标准库兼容性:errors.Is和errors.As完美结合

multierr与标准库兼容性:errors.Is和errors.As完美结合 【免费下载链接】multierr Combine one or more Go errors together 项目地址: https://gitcode.com/gh_mirrors/mu/multierr multierr是一个功能强大的Go错误处理库,允许开发者将一个或多个…...

汉字拼音转换神器pinyin:一站式解决注音、排序与检索难题

汉字拼音转换神器pinyin:一站式解决注音、排序与检索难题 【免费下载链接】pinyin :cn: 汉字拼音 ➜ hn z pīn yīn 项目地址: https://gitcode.com/gh_mirrors/pi/pinyin 在中文信息处理领域,准确高效的汉字拼音转换工具是不可或缺的基础组件。…...

避免90%状态错误:ADK-Python变量引用与上下文管理完全指南

避免90%状态错误:ADK-Python变量引用与上下文管理完全指南 【免费下载链接】adk-python 一款开源、代码优先的Python工具包,用于构建、评估和部署灵活可控的复杂 AI agents 项目地址: https://gitcode.com/GitHub_Trending/ad/adk-python ADK-Pyt…...

解决ActualBudget项目Docker启动失败:从环境配置到日志分析的全流程指南

解决ActualBudget项目Docker启动失败:从环境配置到日志分析的全流程指南 【免费下载链接】actual A local-first personal finance app 项目地址: https://gitcode.com/GitHub_Trending/ac/actual ActualBudget是一款本地优先的个人财务管理应用,…...

终极解决方案:ActualBudget在GrapheneOS移动端的JIT编译问题全攻略

终极解决方案:ActualBudget在GrapheneOS移动端的JIT编译问题全攻略 【免费下载链接】actual A local-first personal finance app 项目地址: https://gitcode.com/GitHub_Trending/ac/actual ActualBudget作为一款本地优先的个人财务管理应用,为用…...

告别快捷键冲突:AeroSpace与DBeaver完美兼容的终极解决方案

告别快捷键冲突:AeroSpace与DBeaver完美兼容的终极解决方案 【免费下载链接】AeroSpace AeroSpace is an i3-like tiling window manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ae/AeroSpace AeroSpace作为一款类i3的macOS窗口管理器&am…...

CTPN vs 传统OCR:为什么它是自然场景文本检测的终极选择

CTPN vs 传统OCR:为什么它是自然场景文本检测的终极选择 【免费下载链接】CTPN Detecting Text in Natural Image with Connectionist Text Proposal Network (ECCV16) 项目地址: https://gitcode.com/gh_mirrors/ct/CTPN CTPN(Connectionist Tex…...

Deepagents测试策略:确保AI代理系统的可靠性

Deepagents测试策略:确保AI代理系统的可靠性 【免费下载链接】deepagents Deepagents is an agent harness built on langchain and langgraph. Deep agents are equipped with a planning tool, a filesystem backend, and the ability to spawn subagents - makin…...

如何快速上手wmiexec-Pro?从安装到基本命令执行的完整指南

如何快速上手wmiexec-Pro?从安装到基本命令执行的完整指南 【免费下载链接】wmiexec-Pro New generation of wmiexec.py 项目地址: https://gitcode.com/gh_mirrors/wm/wmiexec-Pro wmiexec-Pro是新一代的wmiexec.py工具,专为Windows管理规范&…...

探索Swaptube分形渲染:Mandelbrot与Julia集的视觉艺术

探索Swaptube分形渲染:Mandelbrot与Julia集的视觉艺术 【免费下载链接】swaptube youtube video renderer 项目地址: https://gitcode.com/gh_mirrors/sw/swaptube Swaptube是一个功能强大的YouTube视频渲染项目,专注于分形艺术的视觉呈现。它通过…...

终极指南:如何突破K9s权限壁垒,轻松解决受限环境下的资源跳转难题

终极指南:如何突破K9s权限壁垒,轻松解决受限环境下的资源跳转难题 【免费下载链接】k9s 🐶 Kubernetes CLI To Manage Your Clusters In Style! 项目地址: https://gitcode.com/GitHub_Trending/k9s/k9s K9s是一款功能强大的Kubernete…...