Scrapy框架实例(爬取刺猬实习职位信息)

2023-10-24 09:10

本文主要是介绍Scrapy框架实例(爬取刺猬实习职位信息),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击查看刺猬实习网站

这次用的是scrapy框架爬取,爬的内容是左边分类里面的每一个分类第一页的求职信息

求职信息如图:

 

这次爬的有职位,薪水,学历,天数,地理位置

思路:

首先在自己创建的小蜘蛛里设置一个函数,处理开始的页面抓到所有的分类链接,然后用callback回调处理页面函数,再将提取信息传入pipelines保存。

代码呈上:

首先是items部分:

# -*- coding: utf-8 -*-# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass JobItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title = scrapy.Field()#职位salary = scrapy.Field()#薪水education_background = scrapy.Field()#学历day = scrapy.Field()#天数location = scrapy.Field()#位置

settings:(只需要修改一些信息即可)

BOT_NAME = 'job'SPIDER_MODULES = ['job.spiders']
NEWSPIDER_MODULE = 'job.spiders'ROBOTSTXT_OBEY = FalseDEFAULT_REQUEST_HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36','Referer': 'https://blog.csdn.net/qq_43391383/article/details/87033451','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en',
}
LOG_LEVEL = 'WARNING'ITEM_PIPELINES = {'job.pipelines.JobPipeline': 300,
}

 下面是最重要的小蜘蛛:(这里起名为ciwei)

# -*- coding: utf-8 -*-
import scrapy
from job.items import JobItem
import timeclass CiweiSpider(scrapy.Spider):name = 'ciwei'allowed_domains = ['ciweishixi.com']#域名start_urls = ['https://www.ciweishixi.com/']#初始url#抓取初始页面的各种分类的url然后访问将响应传给get_HTML函数def parse(self, response):infos = response.xpath('/html/body/div[2]/div[1]/div/div')for info in infos:urls = info.xpath('div[2]/a/@href').extract()for url in urls:requests = scrapy.Request(url, method="get", callback=self.get_Html)yield requests#接收响应抽取我们要的信息def get_Html(self, response):infos = response.xpath('/html/body/div[2]/section[2]/div/section/article')for info in infos:item = JobItem()#实习职位item['title'] = info.xpath('div[2]/div[1]/a/text()').extract_first()main = info.xpath('div[2]/div[2]/span/text()').extract()#薪水item['salary'] = main[0]#学历item['education_background'] = main[1]#天数item['day'] = main[-1]#位置item['location'] = info.xpath('div[2]/div[1]/div/i[2]/text()').extract_first()yield itemtime.sleep(1)#设置休眠时间

pipelines:

# -*- coding: utf-8 -*-# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
import csv
import codecsclass JobPipeline(object):#以TXT文本保存# def __init__(self):#     self.fp = open("F://ciwei.txt","a+",encoding="utf-8")## def process_item(self, item, spider):#     self.fp.write(#         str((item['title'].strip(),item['salary'],item['education_background'],item['day'],item['location'])) + '\n'#     )##     return item## def close(self):#     self.fp.close()#Excel保存def __init__(self):with open("F://qiuzhi.csv", "ab+") as self.fp:self.fp.write(codecs.BOM_UTF8)  # 为了防止在windows下直接打开csv文件出现乱码self.fp = open("F://qiuzhi.csv",'a+',newline='',encoding='utf-8')self.write = csv.writer(self.fp)self.write.writerow(['职位', '薪水', '学历', '天数', '地区'])def process_item(self, item, spider):self.write.writerow([item['title'].strip(),item['salary'],item['education_background'],item['day'],item['location']])def close(self):self.fp.close()

 

最后在cmd中cd到文件所在目录执行scrapy crawl ciwei 

可以看到我们要的信息已经保存在F盘中的文件内

 

这篇关于Scrapy框架实例(爬取刺猬实习职位信息)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/274149

相关文章

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟