使用scrapy框架爬取51job的关于python的职位,并且进行分析

2023-11-07

example.py 爬虫的主文件,大部分的爬虫逻辑都在这

# -*- coding: utf-8 -*-
import scrapy
# import pyecharts
from ..items import Scrapy3Item
class ExampleSpider(scrapy.Spider):
    name = 'example'
    # allowed_domains = ['example.com']
    start_urls = ['https://search.51job.com/list/000000,000000,0000,00,9,99,python,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=']
    count = 0
    def parse(self, response):
        company_href=response.xpath('//*[@id="resultList"]/div[@class="el"]/p/span/a/@href').extract()
        title_main=response.xpath('//*[@id="resultList"]/div[class="el"]/p/span/a/text').extract()
        for i in company_href:
            yield scrapy.Request(i,callback=self.parse_self,meta={
                title
            })
        next_page=response.xpath('//li[@class="bk"]')[1].xpath('./a/@href').extract_first()
        if  self.count<2:
            yield scrapy.Request(next_page, callback=self.parse)
            self.count+=1
    def parse_self(self,response):
        company_postion=response.xpath('//div[@class="tHeader tHjob"]//div[@class="in"]//div[@class="cn"]//h1/text()').extract()[0].replace('\t','').strip()
        company_salary=response.xpath('//div[@class="tHeader tHjob"]//div[@class="in"]//div[@class="cn"]//strong/text()').extract()[0].strip()
        corporate_name=response.xpath('//div[@class="tHeader tHjob"]//div[@class="in"]//div[@class="cn"]//p[@class="cname"]/a[1]/text()').extract()[0].strip()
        print(company_postion)
        print(corporate_name)
        print(company_salary)
        item=Scrapy3Item()
        item['company_postion']=kong.strip()
        item['corporate_name']=corporate_name
        item['company_salary']=company_salary
        yield item
# /html/body/div[3]/div[2]/div[2]/div/div[1]/h1
# //*[@id="resultList"]/div[4]/p/span/a

item.py

import scrapy


class Scrapy3Item(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    corporate_name=scrapy.Field()
    company_salary=scrapy.Field()
    company_postion=scrapy.Field()

settings.py 配置里面 加上这些

ROBOTSTXT_OBEY = False#不遵守爬虫协议
DOWNLOAD_DELAY = 2 #下载延迟时间 避免 爬取频率太快 被制裁
FEED_FORMAT='csv'
FEED_URI='jobsa.csv'#定义保存为什么文件csv文件,已保存到哪

run.py 运行文件 每次都在命令行运行比较麻烦 定义一个运行文件

from scrapy.cmdline import execute
execute('scrapy crawl example'.split())

其他的文件暂时没有用到

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用scrapy框架爬取51job的关于python的职位,并且进行分析 的相关文章

  • 有没有一种方法可以将python对象直接存储在mongoDB中而不需要序列化它们

    我在某处读到过 您可以使用 BSON 将 python 对象 更具体地说是字典 作为二进制文件存储在 MongoDB 中 但是现在我找不到任何与此相关的文档 有人知道具体如何做到这一点吗 没有办法在不序列化的情况下将对象存储在文件 数据库
  • ctypes 错误:libdc1394 错误:无法初始化 libdc1394

    我正在尝试将程序编译为共享库 我可以使用 ctypes 在 Python 代码中使用该库 使用以下命令该库可以正常编译 g shared Wl soname mylib O3 o mylib so fPIC files pkg config
  • NumPy linalg.eig

    我有这个烦人的问题 但我还没有弄清楚 我有一个矩阵 我想找到特征向量 所以我写 val vec np linalg eig mymatrix 然后我得到了 vec 我的问题是 当我小组中的其他人对相同的矩阵 mymatrix 做同样的事情时
  • 在 python 3 中使用子进程

    我使用 subprocess 模块在 python 3 中运行 shell 命令 这是我的代码 import subprocess filename somename py in practical i m using a real fil
  • Pyqt-如何因另一个组合框数据而更改组合框数据?

    我有一个表 有 4 列 这 4 列中的两列是关于功能的 一个是特征 另一个是子特征 在每一列中 所有单元格都有组合框 我可以在这些单元格中打开txt 我想 当我选择电影院作为功能时 我只想看到子功能组合框中的电影名称 而不是我的 数据 中的
  • PyTorch 给出 cuda 运行时错误

    我对我的代码做了一些小小的修改 以便它不使用 DataParallel and DistributedDataParallel 代码如下 import argparse import os import shutil import time
  • 如何在VIM中设置文件的正确路径?

    每当我击中 pwd在 vim 中命令总是返回路径C Windows system32 即使我在桌面上的 Python 文件中 所以每当我跑步时 python 命令返回 python can t open file Users myname
  • 如何在Python中高效地添加稀疏矩阵

    我想知道如何在Python中有效地添加稀疏矩阵 我有一个程序 可以将大任务分解为子任务 并将它们分配到多个 CPU 上 每个子任务都会产生一个结果 一个 scipy 稀疏矩阵 格式为 lil matrix 稀疏矩阵尺寸为 100000x50
  • Python中列表中两个连续元素的平均值

    我有一个偶数个浮点数的列表 2 34 3 45 4 56 1 23 2 34 7 89 我的任务是计算 1 和 2 个元素 3 和 4 5 和 6 等元素的平均值 在 Python 中执行此操作的快捷方法是什么 data 2 34 3 45
  • 根据 Pandas 中的列表对多列进行排序

    感谢有关如何根据 pandas 中的倍数列表对给定多列进行排序的任何提示 如下所示 import pandas as pd sort a a d e sort b s1 s3 s6 sort c t1 t2 t3 df pd DataFra
  • 如何使用 javascript/jquery/AJAX 调用 Django REST API?

    我想使用 Javascript jQuery AJAX 在前端调用 Django Rest API 请求方法是 POST 但当我看到 API 调用它的调用 OPTIONS 方法时 所以 我开始了解access control allow o
  • Pandas:如何将数据框插入 Clickhouse

    我正在尝试将 Pandas 数据框插入 Clickhouse 这是我的代码 import pandas import sqlalchemy as sa uri clickhouse default localhost default ch
  • Alembic:如何迁移模型中的自定义类型?

    My User模型是 class User UserMixin db Model tablename users noinspection PyShadowingBuiltins uuid Column uuid GUID default
  • Pandas 堆积条形图中元素的排序

    我正在尝试绘制有关某个地区 5 个地区的家庭在特定行业赚取的收入比例的信息 我使用 groupby 按地区对数据框中的信息进行排序 df df orig groupby District Portion of income value co
  • Werkzeug 中的线程和本地代理。用法

    首先 我想确保我正确理解了功能的分配 分配本地代理功能以通过线程内的模块 包 共享变量 对象 我对吗 其次 用法对我来说仍然不清楚 也许是因为我误解了作业 我用烧瓶 如果我有两个 或更多 模块 A B 我想将对象C从模块A导入到模块B 但我
  • Django - 提交具有同一字段多个输入的表单

    预警 我对 Django 以及一般的 Web 开发 非常陌生 我使用 Django 托管一个基于 Web 的 UI 该 UI 将从简短的调查中获取用户输入 通过我用 Python 开发的一些分析来提供输入 然后在 UI 中呈现这些分析的可视
  • sqlite3从打印数据中删除括号

    我创建了一个脚本 用于查找数据库第一行中的最后一个值 import sqlite3 global SerialNum conn sqlite3 connect MyFirstDB db conn text factory str c con
  • falcon,AttributeError:“API”对象没有属性“create”

    我正在尝试测试我的猎鹰路线 但测试总是失败 而且看起来我把所有事情都做对了 my app py import falcon from resources static import StaticResource api falcon API
  • 从列表python的单个列表中删除子列表

    我已经经历过从列表列表中删除子列表 https stackoverflow com questions 47209786 removing sublists from a list of lists 但当我为我的数据集扩展它时 它不适用于我
  • tkinter:打开一个带有按钮提示的新窗口[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 用户如何按下 tkinter GUI 中的按钮来打开新窗口 我只需要非常简单的解决方案 如果代码也能被解释那就太好了 这

随机推荐

  • 微信小程序画布详解

    有的时候需要插入动画 这时就需要用到画布 接下来浅谈一下画布的功能和用法吧 wxml代码
  • Log Structured Merge Trees(LSM) 原理(LSM 算法的原理是什么?)

    十年前 谷歌发表了 BigTable 的论文 论文中很多很酷的方面之一就是它所使用的文件组织方式 这个方法更一般的名字叫 Log Structured Merge Tree LSM是当前被用在许多产品的文件结构策略 HBase Cassan
  • nginx basic auth配置踩坑记

    nginx的basic auth配置由ngx http auth basic module模块提供 对HTTP Basic Authentication协议进行了支持 用户可通过该配置设置用户名和密码对web站点进行简单的访问控制 basi
  • 「深度学习表情动作单元识别」 最新2022研究综述

    来源 专知 基于深度学习的表情动作单元识别是计算机视觉与情感计算领域的热点课题 每个动作单元描述了一种人脸局部表情动作 其组合可定量地表示任意表情 当前动作单元识别主要面临标签稀缺 特征难捕捉和标签不均衡3个挑战因素 基于此 本文将已有的研
  • js获取被选择文件的路径方法汇总

    html代码如下
  • verilog的module调用

    目录 1 MUX2to1 2 MUX3to1 3 MUX4to1 作为写过很多代码的程序员应该知道什么是函数的调用 例如下面的代码中 main函数调用了add函数对两个数值进行相加的操作 int add int a int b return
  • Asp.Net 企业微信第三方应用开发(随手笔记)

    C 企业微信第三方应用开发 OAuth2简介 1 注册企业 2 新建第三方应用 3 网页授权链接 OAuth2简介 OAuth2的设计背景 在于允许用户在不告知第三方自己的帐号密码情况下 通过授权方式 让第三方服务可以获取自己的资源信息 1
  • Vuforia 中在脚本中添加识别图被识别和丢失的回调

    start Vuforia 的unity sdk中有一个重要的脚本 DefaultTrackableEventHandler cs 这个脚本在场景中拖入ImageTarget的预制体时会自动挂载 using UnityEngine usin
  • 快速排序【模板+边界处理】

    全文目录 快速排序的思想 快速排序演示图 代码模板 i 和 j 的取值和循环处理 i 和 j 的取值 循环条件判断 边界问题 什么是边界问题 如何处理边界问题 为什么要这样处理边界问题 区间划分问题 取最值问题 mid 取中间值时是否需要
  • LLVM学习之基础知识

    介绍 学习LLVM与代码混淆技术课程总结出来的经验 希望能够帮助到大家理解 1 我们首先学会LLVM的基础知识 2 如何搭建LLVM的环境 3 编译一个Hello world 4 LLVM IR基本语法 LLVM搭建环境 Ubuntu 20
  • 让AI生成的图像转化为视频

    Hello 让AI生成图像相信都不陌生 毕竟相关内容铺天盖地 如何让AI生成的图像再转化为视频呢 让图像动起来 让图像去说话 或许是一件非常有趣的一件事情呢 那么 我们接下来要不要去试一试 马上去体验一下具有前瞻性的前沿科技呢 我想 你一定
  • 48脚STM32内部基准电压校准ADC的一些心得记录

    STM32的48脚的单片机因为没有Vref Vref 所以我们使用一些高精度参考电压芯片来提高ADC的精度很不方便 这里还有一种方法可以参考下 STM32内部有一个专门用于校准的稳压器VREFINT 它由外部的VSSA供电 他的电压一般为1
  • k8s-day1-k8s简介及基础架构

    1 K8S简介 Kubernetes是容器集群管理系统 是一个开源的平台 可以实现容器集群的自动化部署 自动扩缩容 维护等功能 Kubernetes是一个完备的分布式系统支撑平台 具有完备的集群管理能力 多扩多层次的安全防护和准入机制 多租
  • python 程序员进阶之路:从新手到高手的100个模块

    在知乎和CSDN的圈子里 经常看到 听到一些 python 初学者说 学完基础语法后 不知道该学什么 学了也不知道怎么用 一脸的茫然 近日 CSDN的公众号推送了一篇博客 题目叫做 迷思 Python 学到什么程度可以面试工作 真实反映了
  • win电脑主板设置的Bios密码清除方法

    bios保存着计算机最重要的基本输入输出的程序 开机后自检程序和系统自启动程序 它可从CMOS中读写系统设置的具体信息由于我们一般很少需求进入BIOS设置 因此久而久之 很多朋友容易忘记Bios密码 那么Bios密码忘记了怎么办呢 这是最近
  • opencv中 aplacian算子、Scharr和Sobel算子的API参数

    1 Laplacian算子 cv2 Laplacian src ddepth dst ksize scale delta borderType src 输入图像 通常为灰度图像 单通道 ddepth 输出图像的深度 一般使用cv2 CV 6
  • Spring中有哪些情况会导致@Bean注入失效呢?

    转自 Spring中有哪些情况会导致 Bean注入失效呢 下文笔者讲述Spring中导致 bean注入失败的相关情况说明 如下所示 实现思路 1 component scan扫描路径配置错误 2 Conditional修饰条件 3 bean
  • 学习swift的资料

    https developer apple com library content documentation Swift Conceptual Swift Programming Language CollectionTypes html
  • 数据库表创建索引

    创建一个表 创建名为 Person 的表 有四个列 列名是 LastName FirstName Address 以及 Age 定义列的长度 CREATE TABLE Person LastName varchar 30 FirstName
  • 使用scrapy框架爬取51job的关于python的职位,并且进行分析

    example py 爬虫的主文件 大部分的爬虫逻辑都在这 coding utf 8 import scrapy import pyecharts from items import Scrapy3Item class ExampleSpi