期望目标

自动采集事业单位招聘信息+自动发布到网站+自动提交网址到百度+自动发外链。

技术框架

前端用layUI,后端用flask,数据库用的elasticsearch,编程语言用Python 3.7,服务器用的Windows 2008 sever 64位,部署站点用的IIS 7.5。

搭建思路

采集信息

相对轻车熟路,主要是确定需要提取哪些字段,比如标题、发布时间、截止日期、正文内容、附件、招聘单位、招聘人数、岗位所在省份、所在城市。

采集最重要的两点,一个是不要重复采集,另一个是尽可能及时采集。

所以我把采集过的页面网址也保存到数据库,每次采集到新网址时,会先在数据库精确搜索,没有结果就采集,并在数据库加入新网址,有结果就跳过。

原先是每天凌晨2点采集目标网站,这样尽可能的不影响目标站点正常访问。后来考虑到seo因素,尽可能缩短两个站点发布间隔,改成每小时访问一次,有新网址再采集。当然,设置time.sleep是必须的。

前端开发

前端页面比较简单,直接使用layUI组件。首页就是搜索框+ajax列表,列表页是搜索框+左侧列表+右侧广告位,内容页有标题、发布时间、结构化数据(招聘单位、招聘人数、所在省份、所在城市、截止日期)、正文、相关推荐、最新推荐。

页面开发虽然繁琐耗时,但比较简单,主要是考虑到内链优化,我给省份字段、城市字段加了超链接。

发布时间字段做了处理,比目标站点提前一天,新生成的发布日期如果是双休日,就再往前推移到星期五。目标站点的发布时间只精确到天,我又随机增加了时分秒。并且上午发布的占40%,下午发布的占60%,不同小时段的作者也不同,以此增加手动发布的真实性。

正文招聘内容只能照抄,没法改写,但可以新增摘要来增加页面原创度。所以我在正文前面加了摘要的字段,用textrank4zh提取摘要,长度3句话。

flask开发

flask主要就是功能实现,没什么特别的。比如模板内判断搜索结果数,如果没有搜索结果,就在<head>内添加一行代码,告诉爬虫不要收录该页面。

<meta name="robots" content="noindex">

比如flask默认无法直接访问文件,但提交站点地图时需要提交sitemap文件,可以添加以下代码。

@app.route('/<path>')
def info(path):
base_dir = os.path.dirname(__file__)
resp = make_response(open(os.path.join(base_dir, path)).read())
resp.headers["Content-type"]="text/plain;charset=UTF-8"
return resp

唯一费时的是分页效果的实现,可能因为我是伪码农吧,好在最后还是实现了。

站点部署

推荐用Linux,但我更熟悉Windows,很多人说的这个坑那个坑,在我这也只是繁琐,不算坑。Linux部署会容易很多,没这么折腾。部署Python站点,用的IIS+wsgi,具体步骤在之前博文写过。

elasticsearch使用

整个技术栈最陌生的就是elasticsearch,严格来说可能不属于数据库,但我认为存储数据的都可以当作数据库使用。创建索引、写入数据,都没啥难度,一方面是python-elasticsearch真的很容易上手,另一方面是完全按照教程按需操作。

难点在于查询,按关键词查询时默认是先中文分词,然后只要每个词搜到资源都会在结果页显示,但这精确度实在太低。后来改为必须所有词都存在,才出现在结果页。

举例来说,搜任意关键词,原先只要带了“招聘”,搜索结果数就是数据库全部数据量。现在是必须其他词也能搜到结果才行,所以很多词的搜索结果都为空了。

seo思路

链接提交

自动推送

百度、360搜索、神马搜索,支持自动推送。从站长平台获取一段JS代码,添加到所有页面,有用户访问时就会加载JS,实现自动提交到搜索引擎。

因为门槛低,注定数据量很大,所以提交后往往很久都没处理。好在百度还有其他提交方式。

主动推送

通过接口提交url,使用Python实现很简单,在页面生成时就自动提交。

sitemap

整理“事业单位招聘”相关长尾词,在elasticsearch搜索,有搜索结果的将搜索结果页网址保存到sitemap。

目前整理了8000多个网址,保存在sitemap.txt,已经提交百度和360搜索,但目前还没有处理。

外链发布

很多网站提供站内搜索,并且结果页源码包含搜索的关键词,如果页面源码包含的搜索词是url,并且搜索结果页被百度收录,那么这就是一条外链,虽然质量不高。

目前的方法是,现在豆瓣、新浪博客,这类可以发外链的地方发文章,再把文章地址拿去刷外链,增加外链页面的收录速度。

搜索结果页并不一定会被爬取,所以每天需要刷两遍以上,目前测试效果很好,即使是小号发帖,一般第二天或者隔天收录。

最简单省事的外链,还是交换高质量首页友链。当然,打铁还需自身硬,后面再考虑。

测试结果

网站在2019年9月底上线,期间有代码改动,甚至采集爬虫因为目标站点临时无法访问,导致爬虫也挂掉了。正好赶上国庆放假,挂掉了好几天才发现。

每天工作日更新,每次更新200多条信息,截止发此文,运行时间不足一个月,收录30条,百度权重1,期待后续。

事业单位招聘网搭建思路和seo方法的更多相关文章

  1. python 爬虫之爬取大街网(思路)

    由于需要,本人需要对大街网招聘信息进行分析,故写了个爬虫进行爬取.这里我将记录一下,本人爬取大街网的思路. 附:爬取得数据仅供自己分析所用,并未用作其它用途. 附:本篇适合有一定 爬虫基础 crawl ...

  2. 如何内网搭建NuGet服务器

    NuGet 是.NET程序员熟知的给.NET项目自动配置安装library的工具,它可以直接安装开源社区中的各个公用组件,可以说是非常方便.不过,有些时候,公司内部的公用的基础类库,各个项目都有引用, ...

  3. Scrapy实现腾讯招聘网信息爬取【Python】

    一.腾讯招聘网 二.代码实现 1.spider爬虫 # -*- coding: utf-8 -*- import scrapy from Tencent.items import TencentIte ...

  4. 利用xpath爬取招聘网的招聘信息

    爬取招聘网的招聘信息: import json import random import time import pymongo import re import pandas as pd impor ...

  5. 【转】如何内网搭建NuGet服务器

    原文:http://www.cnblogs.com/zhangweizhong/p/7755332.html NuGet 是.NET程序员熟知的工具,它可以直接安装开源社区中的各个公用组件,可以说是非 ...

  6. Jobedin外企招聘网:6个要点不能不知道(转载)

    又到一年跳槽季,无数职场人士都在蠢蠢欲动,在工作之余,寻找更好的工作. Jobedin外企招聘网,特别提醒:年末跳槽,一定要在拿到新公司的Offer后,才能向现公司提出辞职.不然新工作没找到,却可能丢 ...

  7. python实现对某招聘网接口测试获取平台信息

    """通过接口测试的技术获取某招聘网平台的资料"""url = "https://www.lagou.com/jobs/posit ...

  8. EOS主网搭建教程--&&--搭建节点--&&--搭建mongodb数据库

    EOS主网搭建教程: 1.git clone https://github.com/EOS-Mainnet/eos.git --recursive 2.cd eos 3.git tag (查看有哪些分 ...

  9. 放弃了程序员互联网高薪,跑去事业单位做IT的尴尬

    “你是程序员对吧?”“是啊,怎么了?”“那你帮我修一下电脑吧.”我原来也是一个重点大学毕业,基本上事业里面搞IT就干这些事情,要是以前,我肯定会想,我是程序员和修电脑有啥关系. 但是自从进了事业单位, ...

随机推荐

  1. 一个vue练手的小项目

    编程路上的菜鸟一枚 : 最近接触了vue 然后写了一个练手的项目 使用vue-cli脚手架来搭建了的项目 技术: vue2  + vue-router  + ES6 + axios 框架有 mint- ...

  2. 使用 Nginx 部署前后端分离项目,解决跨域问题

    前后端分离这个问题其实松哥和大家聊过很多了,上周松哥把自己的两个开源项目部署在服务器上以帮助大家可以快速在线预览(喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了 ...

  3. [Vue warn]: Duplicate keys detected: 'area'. This may cause an update error.

    运行vue程序,浏览器报错: 原因:检测到重复的密钥:'area',因为在使用v-for循环绑定的时候,key的值是唯一的,不能相同,否则会出现意想不到的bug 解决办法:v-for时绑定的key唯一

  4. java、if判断和循环

    一.选择.循环语法    选择        if            if(表达式)语句A:                如果表达式的值是真的,就会执行语句A,否则不执行             ...

  5. 2019年9月末周java面试总结

    不知不觉离职已经2个月了,这周开始投简历找工作,本来也做好了被打击的心理准备了,毕竟这么久没敲代码,也没怎么准备,基本上是属于裸面. 总结一下简历投递情况: 不知道是简历写得太敷衍,还是要求太高,总之 ...

  6. 基于Linux系统--web环境搭建

    上线部署文档 数据库部分1.下载Mysql服务    #yum  install  mysql-server 2.更改             /etc/my.cnf 3.启动Mysql        ...

  7. 构建之法——homework4

    手机应用——软件腾讯QQ: QQ是腾讯公司开发的一款基于Internet的即时通信软件.最初通过在线广告进行盈利(Banner广告.Email广告等).然后通过免费注册QQ,获取大量用户.开发QQ相关 ...

  8. 利用Python进行数据分析:【IPython】

    一.IPython基础功能 1.IPython是交互式的Python命令行2.安装与使用 #安装:pip install ipython #使用:ipython与Python解释器的使用方法一致 注: ...

  9. Python学习笔记整理总结【Django】:Model操作(一)

    Model操作(一) 一.Django ORM基本配置 ORM:关系对象映射(Object Relational Mapping,简称ORM)db Frist:到目前为止,当我们的程序涉及到数据库相关 ...

  10. 认识MongoDB复制集

    ​ 从这一篇开始,我们要踏上MongoDB进阶之路啦,想想还有点小开心呢.一筐猪镇楼. ​ 引入复制集 我们先来想一个场景,如果本地项目使用MongoDB,都是下载,安装,连接一条龙服务.这实际也就是 ...