基于Python Django的拉勾网招聘信息爬取与展示系统

拉勾网招聘信息爬取展示开发报告

拉勾网招聘信息爬取展示开发任务分配

Django框架

功能

人员

Django应用

框架搭建

子应用创建

应用发布

拉勾网爬虫

Selenium的使用

爬虫代码的编写

爬虫数据解析

Echartsweb子应用

解析JSON

数据可视化

全国各省Python岗位招聘地区值域漫游图

Python岗位招聘前7名地区图

目录

1 目标

2 功能需求

3 开发环境

4 设计思路

4.1 拉钩网招聘信息爬取

4.2 Echarts可视化

5 技术分析

5.1 Django框架Web应用

5.2 拉勾网招聘信息爬取

5.3 数据可视化

5.4 页面美化框架bootstrap

6 跟我做

6.1 编写代码

7 运行

7.1 程序导入

7.2 运行结果

  1. 目标

实践目标

  1. 掌握Python基础语言语法知识;
  2. 掌握Pycharm工具的使用;
  3. 掌握SeleniumWeb应用程序测试的工具在爬虫中的使用;
  4. 掌握爬虫技术;Json解析方法;
  5. 掌握Django框架的使用;
  6. 掌握可视化工具Echarts;
  7. 掌握bootstrap页面框架的使用;

  1. 功能需求

爬取拉勾网Python全国招聘的求职信息,通过requests 请求获取单页面,然后分析页面加载找到数据,添加headers信息,模仿浏览器请求,最后解析页面,实现翻页爬取。根据爬取的结果信息进行数据分析与可视化,使用echarts实现数据可视化,展示Python岗位招聘全国范围内各个城市的招聘数量信息结果图形化展示。

基于Python Django的拉勾网招聘信息爬取与展示系统_第1张图片

图2-1 全国各省Python岗位招聘地区值域漫游图

基于Python Django的拉勾网招聘信息爬取与展示系统_第2张图片

图2-2 Python岗位招聘前7名地区图

  1. 开发环境
  2. 设计思路

类型

工具与环境

开发工具

Pycharm

技术运用

Python基础语法,类和对象,django框架,bootstrap,echarts,selenium。

使用Pycharm工具创建一个django web应用工程,工程名为:laweb。

    1. 拉钩网招聘信息爬取
  1. 分析页面。先分析下拉钩的页面,是通过ajax方式动态显示的,提交的参数是页数,通过post方式进行提交,为了获取数据,使用Selenium 。
  2. Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。

class lagou_swiper():

    # //设置初始化

    def init(self):

        self.alldata=[]

        self.driver=webdriver.Firefox()

        self.wait=WebDriverWait(self.driver,10)

        self.isnull=False

        self.position=input('请输入要爬取的职位')

        self.driver.get('https://www.lagou.com/jobs/list_' +self.position+ '?labelWords=&fromSearch=true&suginput=')

        self.wait.until(EC.presence_of_all_elements_located((By.XPATH,'//div[@class="body-btn"]')))[0].click()

        self.cookies=input("请输入cookies")

  1. 爬取的数据写入到相应的文件中。把爬取的结果保存到la.txt中。

{'职位': 'python开发工程师', '城市': '深圳', '工资': '10k-17k', '经验': '经验3-5年', '学历背景': '本科', '公司名称': '柚子街'}
{'职位': 'Python开发工程师', '城市': '上海', '工资': '20k-40k', '经验': '经验3-5年', '学历背景': '大专', '公司名称': '得物App'}
{'职位': 'python', '城市': '上海', '工资': '16k-25k', '经验': '经验3-5年', '学历背景': '本科', '公司名称': 'CLPS'}
{'职位': '高级 Python 工程师', '城市': '深圳', '工资': '25k-35k·14薪', '经验': '经验5-10年', '学历背景': '本科', '公司名称': 'AfterShip'}

...

    1. Echarts可视化
  1. ECharts开源来自百度商业前端数据可视化团队,基于html5 Canvas,是一个纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。
  2. ECharts可视化文件在django文件中的static中的echarts.min.js文件。

在模板页面Templates/index.html中通过

进行引入。

  1. 技术分析
    1. Django框架Web应用
  1. Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。
  2. 用manage .py runserver 启动Django服务器时就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,告诉Django Python模块应该用作本站的URLConf,默认的是urls .py。
  3. 当访问url的时候,Django会根据ROOT_URLCONF的设置来装载URLConf。然后按顺序逐个匹配URLConf里的URLpatterns。找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request)。最后该view函数负责返回一个HttpResponse对象。

5.1.1 django工程的创建

1、创建工程

django-admin startproject laweb

# 这个工程会创建在当前目录下,所以想要在那个目录下创建工程就先到那个目录下,或者加上路径。

2、工程目录说明

查看工程目录

cd laweb# 进入工程目录

tree  # 即可查看当前工程中的目录信息

说明:

与项目同名的目录是工程文件

settings.py是项目整体的配置文件

urls.py是项目的路由配置文件

wsgi.py是项目与WSGI协议兼容的Web服务器入口

manage.py是项目的管理文件

基于Python Django的拉勾网招聘信息爬取与展示系统_第3张图片

5.1.2 工程的启动

python3 manage.py runserver ip:端口  # ip和端口号可以不写,默认是127.0.0.1 和 8000

5.1.3 创建子应用

python3 manage.py startapp echartsweb

# 需要先进入的工程目录下再进行创建子应用

子应用目录说明

admin.py文件是网站的后台管理站点的配置文件

apps.py文件是配置当前子应用的相关信息

migrations是用于存放数据库迁移历史文件

models.py是用于保存数据库模型类

tests.py文件是用于开发测试的

views.py文件是编写Web应用视图函数

基于Python Django的拉勾网招聘信息爬取与展示系统_第4张图片

    1. 拉勾网招聘信息爬取

爬取拉钩有反爬限制。采用Selenium 。Selenium 本是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。而这一特性为爬虫开发提供了一个选择及方向,由于其本身依赖于浏览器,所以使用Python的selenium库的前提是:需要下载相应的浏览器驱动程序。

      1. 引入各种模块

    

from selenium import webdriver

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

from selenium.common.exceptions import TimeoutException

from selenium.common.exceptions import StaleElementReferenceException

      1. 初始化火狐浏览器

self.driver=webdriver.Firefox()

      1. 初始化设置信息

self.alldata=[]

self.driver=webdriver.Firefox()

self.wait=WebDriverWait(self.driver,10)

self.isnull=False

self.position=input('请输入要爬取的职位')

self.driver.get('https://www.lagou.com/jobs/list_' +self.position+ '?labelWords=&fromSearch=true&suginput=')

self.wait.until(EC.presence_of_all_elements_located((By.XPATH,'//div[@class="body-btn"]')))[0].click()

self.cookies=input("请输入cookies")

      1. 爬取信息本地保存

def save(self):

    with open('./la.txt','w',encoding='utf-8') as f:

        for item in self.alldata:

            for json_dict in item:

                f.write(str(json_dict)+'\n')

    1. 数据可视化
      1. 通过Json解析下载的la.txt数据

def json(request):

    city=[]

    allcity=[]

    d={}

    res = {}

    data=[]

    with open("./swiper_demo/la.txt",'r',encoding='UTF-8') as f:

        rows=f.readlines()

        for row in rows:

            row=row.replace("'",'"')

            r=eval(row)

            city.append(r['城市'])

      1. 发送到页面

def index(request):

    return render(request,'index.html',locals())

      1. 数据可视化显示

    

    1. 页面美化框架bootstrap

Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。

安装bootstrap.js,导入到/static/下即可。

  1. 跟我做
    1. 编写代码
      1. 拉勾网.py

      1. Index.html

基于Python Django的拉勾网招聘信息爬取与展示系统_第5张图片

      1. Views.py

基于Python Django的拉勾网招聘信息爬取与展示系统_第6张图片

  1. 运行
    1. 程序导入

1、启动PyCharm 2020.1 x64。

2、选择左上角“文件(F)”菜单,选择“File ->Open”,显示文件选择对话框。

3、跳到工程目录,选择“laweb”文件,点击“打开”,即可打开项目。

4、运行Django项目。

    1. 运行结果

基于Python Django的拉勾网招聘信息爬取与展示系统_第7张图片

基于Python Django的拉勾网招聘信息爬取与展示系统_第8张图片

你可能感兴趣的:(Python,Django,程序设计,python)