scrapy抓取博客

news2025/1/6 14:40:17

scrapy主要的步骤:

  • 创建一个scrapy项目
  • 获取博客内容和保存
  • 抓去url和title
  • 储存标题和链接
  • 获取文章内容

一.创建一个scrapy: 

在桌面上会生成一个文件夹:

在开始爬虫前,打开items.py:

class BlogspiderTtem(scrapy.Item):
    title=scrapy.Field()
    link=scrapy.Field()
    concent=scrapy.Field()

二.获取博客网页并保存:

1. 在blogSpider/spider创建一个eqwaak.py的文件,并制定爬取的范围:
import scrapy

class EqwaakSpider(scrapy.Spider):
    name = 'eqwaak'
    allowed_domains=['链接']
    start_urls=['链接']
    
    
    def parse(self, response):
        pass

创建爬虫器,必须要继承scarpy.Spider类:

  • name:爬虫名字的唯一名字
  • allow_domains=[]:爬取域名下这个网页
  • start_urls:爬虫会在启动爬取url列表
  • parse():爬虫的一个方法,获取爬虫的response,解析网页
 2.修改parse的内容:
    def parse(self, response):
        print(response.text)
        filename="index.html"
        with open(filename,'w',encoding='utf-8')as f:
            f.write(response.text)

然后在cmd里面执行:

scrapy crwal  爬虫名字

三.提取博客标题和链接数据 

 修改eqwaak.py的代码:

import scrapy
from bs4 import BeautifulSoup

class EqwaakSpider(scrapy.Spider):
    name = 'eqwaak'
    allowed_domains=['']
    start_urls=['']


    def parse(self, response):
       soup=BeautifulSoup(response.text,"lxml")
       title_list=soup.find("h4",class_="blog-img-box-top").a.text.strip()
       print('文章标题:',title_list)
       
       for i in range(len(title_list)):
           title=title_list[i].a.text.strip()
           print('第%s篇文章标题是%s'%(i+1,title))
里面把提取的数据放入里面:

 

import scrapy
from bs4 import BeautifulSoup
from financeSpider.items import BlogspiderTtem

class EqwaakSpider(scrapy.Spider):
    name = 'eqwaak'
    allowed_domains=['链接']
    start_urls=['链接']


    def parse(self, response):
       items=[]
       soup=BeautifulSoup(response.text,"lxml")
       title_list=soup.find("h4",class_="blog-img-box-top")
       print('文章标题:',title_list)

       for i in range(len(title_list)):
           item=BlogspiderTtem()
           title=title_list[i].a.text.strip()
           link=title_list[i].a["herf"]
           
           item["title"]=title
           item["link"]=link
           items.append(item)
           
        return items
如果输出是josn格式,可以写:

scrapy crwal eqwaak -o article.json 

 如果输出是csv格式,可以写:

scrapy crwal eqwaak -o artticle.vsc 

四.储存博客标题和链接 :

 打开pipelines.py,代码:
class FinancespiderPipeline(object):
    #保存地址
    file_path="C:/Users/xuyix/Desktop/financeSpider/result.txt"

    def __init__(self):
        self.article=open(self.file_path,"a+",encoding="utf-8")

    def process_item(self, item, spider):
        title=item["title"]
        link=item["link"]
        content=item["content"]
        output=title+'\t'+link+'\t'+content+'\n\n'
        self.article.write(output)
        return item
还需要修改setting里面的代码
取消注释
ITEM_PIPELINES = {
   "financeSpider.pipelines.FinancespiderPipeline": 300,
}
在命令行输入: 

scrapy crwal eqwaak 

五.获取文章内容: 

在eqwaak.py里面添加代码:
    def parse2(self,response):
        item=response.meta['item']
        #解析文章内容
        soup=BeautifulSoup(response.text,"lxml")
        content=soup.find("div",class_="blog-img-box-top").text.strip()
        content=content.replace("\n","")
        item["content"]=content
        yield item
删除text文件:

scrapy crwal eqwaak

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

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

相关文章

MacOS搭建docker本地私有镜像库

相关环境 macOS: bigsur 11.7.8 docker desktop: 4.22.0 docker engine: 24.0.5 准备工作 本机已经安装好docker desktop,未安装的自行参考其他教程。如果不能翻墙,可以修改本地的镜像地址,可在docker desktop 设置中的docker engine中修…

【数学建模】天然肠衣搭配问题

2011高教社杯全国大学生数学建模竞赛D题 天然肠衣(以下简称肠衣)制作加工是我国的一个传统产业,出口量占世界首位。肠衣经过清洗整理后被分割成长度不等的小段(原料),进入组装工序。传统的生产方式依靠人工…

JVS物联网平台5.7功能新增说明

项目介绍 JVS是企业级数字化服务构建的基础脚手架,主要解决企业信息化项目交付难、实施效率低、开发成本高的问题,采用微服务配置化的方式,提供了 低代码数据分析物联网的核心能力产品,并构建了协同办公、企业常用的管理工具等&am…

【组合数学】2842. 统计一个字符串的 k 子序列美丽值最大的数目

本文涉及知识点 组合数学汇总 LeetCode 2842. 统计一个字符串的 k 子序列美丽值最大的数目 给你一个字符串 s 和一个整数 k 。 k 子序列指的是 s 的一个长度为 k 的 子序列 ,且所有字符都是 唯一 的,也就是说每个字符在子序列里只出现过一次。 定义 f…

MATLAB的Bar3函数调节渐变色

一. colormap函数 可以使用colormap函数: t1=[281.1,584.6, 884.3,1182.9,1485.2; 291.6,592.6,896,1197.75,1497.33; 293.8,596.4,898.6,1204.4,1506.4; 295.8,598,904.4,1209.0,1514.6];bar3(t1,1) set(gca,XTickLabel,{300,600,900,1200,1500},FontSize,10) set(gca,YTic…

面试题:集合篇

说说 List, Set, Queue, Map 四者的区别? List(对付顺序的好帮手): 存储的元素是有序的、可重复的。Set(注重独一无二的性质): 存储的元素是无序的、不可重复的。Queue(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储的元素是有序的、可重…

Python 中使用私有成员的子类化

1、问题背景 Python 语言中,变量名与访问器同名是一个非常好的特性: self.__value 1def value():return self.__value但是,当我们想要子类化一个类,并访问其私有成员时,却没有一种简单的方法。通常,我们…

USB系列一:USB技术概念

在这里USB的历史就不赘述了,有兴趣可以自己去搜索。也省略掉USB接口的概述,这些都是一些飞技术性的常识性的知识,没必要浪费篇幅和文字来描述。 一、USB总线版本:(从USB1.1说起) 1、USB1.1 1998年9月23日…

Android进阶之路 - 静态会员进度条

年后这个新版本加入了VIP模块,有幸正好由我来负责,可以再积累一下这方面的知识。 那段时间看了一本书,书中说到初级码农的特性之一就是完全集中于某些功能,忽略了了很多成长机会,所以重复性劳作带来的成长值有限&#…

程序员必备的7大神器,效率飞起!

我们都知道程序员在工作时,会经常遇到任务繁重的情况,为了提高效率,程序员们也会借助一些软件,那么哪些软件可以帮助程序员们提高工作效率呢? 整理不易,关注一波!! 1. Xftp 7 Xft…

深度学习实例2_车牌识别分割——自学笔记

import cv2 from matplotlib import pyplot as plt import os import numpy as np from PIL import ImageFont, ImageDraw, Image彩色图片显示 def plt_show0(img):b,g,r = cv2.split(img)img = cv2.merge([r, g, b])plt.imshow(img)plt.show()灰度图片显示 def plt_show(img…

【北京迅为】《iTOP-3588开发板快速烧写手册》-第11章 救砖方法

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

最稳定的VPS有哪些?2024年稳定服务器推荐

最稳定的VPS有:DigitalOcean、萤光云、Vultr、Linode、AWS。 VPS的硬件质量、网络稳定性、数据中心设施、数据中心位置等都是评估VPS好坏的重要条件,接下来为一起来看看5个2024年稳定服务器厂商,大家可以自己对比一下。 2024年稳定服务器推荐…

OpenAI 高管:一年后,你会觉得现在的 ChatGPT 像笑话一样糟糕|TodayAI

OpenAI 的首席运营官 Brad Lightcap 表示,一年后,你会觉得现在的 ChatGPT 像笑话一样糟糕。未来的 ChatGPT 版本将会有重大升级。他还讨论了 AI 取代人类工作和对电网的压力的可能性。 虽然我们不知道 OpenAI 何时会推出 GPT-5,但公司高管已…

类和对象、this指针、类里的默认生成函数

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

探索数据结构

什么是数据结构 数据结构是由:“数据”与“结构”两部分组成 数据与结构 数据:如我们所看见的广告、图片、视频等,常见的数值,教务系统里的(姓名、性别、学号、学历等等); 结构:当…

C++ 继承篇

面向对象语言的三大特性:封装,继承和多态 根据目前学到的知识,对于封装的理解,大致有两层: 将数据和方法封装,不想让外面看到用private/protected修饰,想让外面看到用public修饰类型的行为不满…

Intel® Platform Firmware Resilience (Intel® PFR):英特尔® 平台固件恢复力(Intel® PFR)

为了降低与固件相关的安全风险,英特尔为服务器平台开发了英特尔平台固件恢复力(Intel PFR)。 此功能可保护关键固件在启动和运行时免受攻击。这可以被视为是 Cerberus 项目或 NIST SP800-193 的实现。 英特尔平台固件恢复力(Int…

SQL 基础 | JOIN 操作介绍

在SQL中,JOIN是一种强大的功能,用于将两个或多个表中的行结合起来,基于相关的列之间的关系。 JOIN操作通常用在SELECT语句中,以便从多个表中检索数据。 以下是几种基本的JOIN类型以及它们的用法: INNER JOIN&#xff1…

探秘编程之旅:Baidu Comate 智能代码助手的魔法揭秘

目录 Baidu Comate智能代码助手1.场景需求2.安装步骤3.功能介绍3.1 /指令3.2 插件3.3 #知识 4.使用体验5.总结 Baidu Comate智能代码助手 智能编程助手的意义在于提升编程体验和效率,使开发人员能够更轻松、更快速地完成编码任务,是如今人工智能技术的一…