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

相关文章

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal

Python跨文件实例化、跨文件调用及导入库示例代码

《Python跨文件实例化、跨文件调用及导入库示例代码》在Python开发过程中,经常会遇到需要在一个工程中调用另一个工程的Python文件的情况,:本文主要介绍Python跨文件实例化、跨文件调... 目录1. 核心对比表格(完整汇总)1.1 自定义模块跨文件调用汇总表1.2 第三方库使用汇总表1.3 导

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清