Python 使用scrapy框架

news2024/11/21 1:44:37

1、安装scrapy

2、使用scrapy创建项目,在终端命令行 执行如下命令,会创建一个myproject项目

scrapy startproject myproject

3、创建完成后,目录结构如下

4、cd myproject进入项目 ,执行scrapy genspider weather  ******,会在spiders下创建一个ptyhon文件

scrapy genspider weather  weather*****

5、这个文件里面就可以写具体的爬虫逻辑了,

import scrapy
import re
from myproject.items import MyprojectItem


class WeatherSpider(scrapy.Spider):
    # 名称
    name = "weather"
    # 爬取域名的范围
    allowed_domains = ["******"]
    # 爬取的网址
    start_urls = ["********"]
    #start_urls = ["********"]

    
    def parse(self, response, **kwargs):
        data = response.xpath("//div[@class='content_l']/dl")
        for each in data:
            # 图片
            img = each.xpath("./dt/a/img/@src").get()
            # 标题
            title = each.xpath("./dd/h3/a/text()").get()
            # 时间
            create_time = each.xpath("./dd/h3/span/text()").get()
            # 简介
            description = each.xpath("./dd/p/text()").get()
            content_href = each.xpath("./dd/h3/a/@href").get()
            # # 内容链接
            # item = MyprojectItem(
            #     img=img,
            #     title=title,
            #     create_time=create_time,
            #     description=description,
            #     content_href=content_href
            # )
            #
            # yield item
            # 定义一个回调函数来处理每个链接的响应
            yield scrapy.Request(url=content_href, callback=self.parse_content_page,
                                      meta={'item': {'img': img, 'title': title, 'create_time': create_time,
                                                     'description': description}})

    def parse_content_page(self, response):
        # print(response.url)
        # response.meta['item'].copy()
        element = response.xpath('//div[@class="articleBody"]').get()
        content = re.search(r'<div class="articleBody">(.*?)</div>', element, re.DOTALL).group(1)
        # 使用正则表达式去除注释内容
        content = re.sub(r'<!--.*?-->', '', content)
        item_data = response.meta['item']
        # print(item_data)
        # 创建item并填充数据
        item = MyprojectItem(
            img=item_data['img'],
            title=item_data['title'],
            create_time=item_data['create_time'],
            description=item_data['description'],
            content=content  # 假设这里添加了从页面中提取的内容
        )

        # Yield填充完毕的item
        yield item

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1811042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库期末设计——图书管理系统

目录 1.前置软件以及开发环境&#xff1a; 2.开发过程讲解 代码环节&#xff1a; 数据库代码 1.BookDao.java 2.BookTypeDao.java 3.UserDao.java 4.Book.java 5.BookType.java 6.User.java 7.DbUtil.java 8.Stringutil.java 9.BookAddInterFrm.java 10.BookMan…

知识图谱的应用---新零售

文章目录 新零售知识图谱构建过程典型应用 新零售 新零售&#xff0c;即个人、企业以互联网为依托&#xff0c;通过运用大数据、人工智能等先进技术手段并运用心理学知识&#xff0c;对商品的生产、流通与销售过程进行升级改造&#xff0c;进而重塑业态结构与生态圈&#xff0c…

LlamaIndex 四 数据连接器

前言 我们通过各项配置&#xff0c;理解了LlamaIndex在构建知识库和基于知识库的推荐两个阶段&#xff0c;怎么和业务相结合。本文&#xff0c;我们将开始深入理解LlamaIndex的各个模块。首先&#xff0c;LlamaIndex强大的Data Connector 数据连接器上场。 LlamaIndex擅长和各…

AI绘画Stable Diffusion必看:如何生成人物的全身照实战教程!

大家好&#xff0c;我是画画的小强 在小伙伴们私下留言中&#xff0c;关于如何实现人物的全身照一直有人咨询&#xff0c;看来这个问题还是困惑着不少小伙伴&#xff0c;今天我们就这个问题详细讨论一下。 一. 宽高比参数设置 在讨论如何生成图片的全身照之前&#xff0c;我…

关于用宽带(拨号)连接VPN无法上网,但是wifi或者热点就可以的问题

参考链接&#xff1a;https://zhuanlan.zhihu.com/p/580929250https://zhuanlan.zhihu.com/p/580929250 https://blog.csdn.net/Yaoyao2024/article/details/132245249文章浏览阅读10w次&#xff0c;点赞161次&#xff0c;收藏515次。很多同学在学习访问学校提供的资源时或者一…

等保一体机案例 | 黑龙江某事业单位档案管理系统借助捷云过二级等保

黑龙江某事业单位&#xff0c;聚焦产业发展的应用技术研究&#xff0c;兼顾重大技术应用的基础研究&#xff0c;满足广东省经济社会发展需要。 由于信创要求&#xff0c;也为了满足《关于加强国家电子政务工程建设项目信息安全风险评估工作的通知》&#xff08;发 改高技〔2008…

[图解]企业应用架构模式2024新译本讲解13-服务层1

1 00:00:00,150 --> 00:00:05,030 接下来我们来看服务层模式 2 00:00:06,070 --> 00:00:11,740 这也是领域逻辑类型的最后一个模式 3 00:00:13,700 --> 00:00:17,110 我们前面实际上已经见过了&#xff0c;事务脚本 4 00:00:17,240 --> 00:00:19,900 的时候&…

citys

城市边界电子围栏 初始化摄像头、灯光等 let renderer, scene, camera, stats, gui, texture;renderer new THREE.WebGLRenderer({logarithmicDepthBuffer: true,});renderer.setPixelRatio(window.devicePixelRatio);renderer.setSize(window.innerWidth, window.innerHeigh…

如何实现单例模式及不同实现方法分析-设计模式

这是 一道面试常考题&#xff1a;&#xff08;经常会在面试中让手写一下&#xff09; 什么是单例模式 【问什么是单例模式时&#xff0c;不要答非所问&#xff0c;给出单例模式有两种类型之类的回答&#xff0c;要围绕单例模式的定义去展开。】 单例模式是指在内存中只会创建…

一颗万能的PD协议芯片,能芯Type-C PD协议芯片“ECP5705”, 它是如何实现PD直流风扇应用呢?

文章目录 文章目录 前言 一、PD风扇方案介绍 二、芯片介绍 三、PD风扇-供电方式 四、能芯科技 PD 协议芯片ECP5705-应用场景 总结 前言 随着USB Type-C接口的普及和PD取电芯片的出现&#xff0c;使得小型家电和电动工具可以通过统一的USB Type-C接口进行充电&#xff0c;极大地…

台灯学生用哪个牌子最好?学生台灯十大名牌排行榜分享

近年来&#xff0c;我们注意到儿童近视的现象呈现出增多且趋于低龄化的趋势。这一变化&#xff0c;部分原因可以归咎于孩子们越来越多地使用电子产品&#xff0c;另一部分则与他们面临的学业压力增加有关。鉴于此&#xff0c;家长们在挑选儿童学习用品时变得格外谨慎&#xff0…

js实现简单计算器词法解析语法解析解释器,带可视化界面

代码 Lexer是词法解析器 Parser是语法解析器 Interpreter 是ast解释器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…

【启明智显芯片应用】Model3C芯片4.3寸拼图机应用方案

数据显示&#xff0c;618前期&#xff0c;早教启智、智能玩具、科学启蒙、数字阅读类产品销量增长迅猛。当下&#xff0c;90后新生代父母对于孩子的科学启蒙教育愈发重视&#xff0c;他们在给孩子选择学习产品时&#xff0c;越来越倾向于选择寓教于乐的益智类产品&#xff0c;而…

神奇!你见过生成Prompt的Prompt?

目录 先上干货 这个Prompt是怎么来的 道路是曲折的 总结 PART/ 01 先上干货 你怎么会想到这些场景呢&#xff0c;比如健身计划、英语学习、旅游规划等等&#xff0c;其实挺不好意思的&#xff0c;大家被我骗了&#xff0c;这些都是我使用一个Prompt解决的。 对&#xf…

使用OpenLLM在AMD GPU上的分步指南

Step-by-Step Guide to Use OpenLLM on AMD GPUs — ROCm Blogs 引言 OpenLLM是一个开源平台&#xff0c;旨在促进大型语言模型&#xff08;LLMs&#xff09;的部署和使用&#xff0c;支持多种模型&#xff0c;适应不同的应用&#xff0c;无论是在云环境还是本地环境中。在本教…

何为屎山代码?

在编程界&#xff0c;有一种代码被称为"屎山代码"。这并非指某种编程语言或方法&#xff0c;而是对那些庞大而复杂的项目的一种形象称呼。屎山代码&#xff0c;也被称为"祖传代码"&#xff0c;是历史遗留问题&#xff0c;是前人留给我们的"宝藏"…

丽水职业技术学院:以太彩光网络筑基教育信息化标杆之路

丽水职业技术学院作为教育信息化的先行者,是浙江省首批“浙江省高职高水平学校”、“浙江省教育信息化试点校单位”,也是“浙江省数字校园示范校”的一员。学院紧握“十四五”规划契机,全面加速数字化转型,旨在通过基础网络的革新、数字化教学的深化、信息服务的优化、学生管理…

wma和mp3哪个音质好?让我告诉你哪个更胜一筹

在数字音频领域&#xff0c;WMA和MP3是两种常见的音频格式&#xff0c;它们在网络上的音频传输和储存中都扮演着重要的角色。然而&#xff0c;许多人可能会对这两者之间的音质差异产生疑问&#xff0c;想知道哪一个更适合他们的需求。wma和mp3哪个音质好&#xff1f;在本文中&a…

Transformer介绍

Transformer的诞生 2018年Google发出一篇论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》, BERT模型横空出世, 并横扫NLP领域11项任务的最佳成绩&#xff01; 而在BERT中发挥重要作用的结构就是Transformer, 之后又相继出现XLNET&a…

如何制作MapBox个性化地图

我们在《如何在QGIS中加载MapBox图源》一文中&#xff0c;为你分享了在QGIS中加载MapBox的方法。 现在为你分享如何制作MapBox个性化地图的方法&#xff0c;如果你需要最新版本的QGIS及高清图源&#xff0c;请在文末查看获取软件安装包的方法。 新建地图样式 进入Mapbox Stu…