首先进入该网站的https://www.51job.com/robots.txt页面

给出提示:

 找不到该页       File not found

 您要查看的页已删除,或已改名,或暂时不可用。

 请尝试以下操作:
如果您已经在地址栏中输入该网页的地址,请确认其拼写正确。
打开 www.51job.com 主页,然后查找指向您感兴趣信息的链接。
单击后退按钮,尝试其他链接。

  注:

  • 网络爬虫:自动或人工识别robots.txt,再进行内容爬取
  • 约束性:robots协议建议但非约束性,不遵守可能存在法律风险

如果一个网站不设置robots协议说明所有内容都可以爬取,所以为可爬取内容。

源程序如下:

  

 #!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : HtmlParser.py
# @Author: 赵路仓
# @Date : 2020/2/28
# @Desc : 前程无忧求职网的爬虫程序
# @Contact : 398333404@qq.com from bs4 import BeautifulSoup
import requests
import csv
import re
import io # 请求头
head = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
# 链接
url = "https://search.51job.com/list/000000,000000,0000,00,9,99,%25E8%25BD%25AF%25E4%25BB%25B6,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=" # csv写入表头
def headcsv():
with open('/position.csv', 'w', encoding='utf-8', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["职位", "公司", "所在地", "薪酬", "日期", "网址"]) # txt写入表头
def headtxt():
ftxt = open('E:/data/position.txt', 'w', encoding='utf-8')
ftxt.write("职位 公司 所在地 薪酬 日期 网址")
ftxt.close() def position(url, head):
# fcsv = open('/position.csv', 'a', encoding='utf-8', newline='')
ftxt = open('E:/data/position.txt', 'a', encoding='utf-8')
try:
r = requests.get(url, headers=head, timeout=3)
# 设置解析编码格式
r.encoding = r.apparent_encoding
print(r.apparent_encoding)
# 打印状态码
print(r.status_code)
# 打印页面代码
# print(r.text)
# print(soup.prettify())
text = r.text
soup = BeautifulSoup(text, 'html.parser')
# 一条招聘信息
item = soup.find_all(class_='el', recursive=True)
num = 0
for i in item:
num += 1
if num > 16:
itemdetail = i.text.replace(" ", "").replace("\n", " ").replace(" ", " ").lstrip() + i.find("a").attrs['href']
print(itemdetail)
ftxt.write(itemdetail.replace("\n","")+'\r')
print("写入成功")
ftxt.close()
except:
print("爬取职位过程中出错!") def write(url, head):
for i in range(1, 2000):
url = "https://search.51job.com/list/000000,000000,0000,00,9,99,%25E8%25BD%25AF%25E4%25BB%25B6,2,"+str(i)+".html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare="
print(url)
position(url, head) if __name__ == "__main__":
# head()
write(url, head)

所爬取条目分布为职位 公司 所在地 薪酬 日期 网址 ,保存路径为E:/data/position.txt可自行修改路径或者文件格式。

[Python] 前程无忧招聘网爬取软件工程职位 网络爬虫 https://www.51job.com的更多相关文章

  1. python 手机app数据爬取

    目录 一:爬取主要流程简述 二:抓包工具Charles 1.Charles的使用 2.安装 (1)安装链接 (2)须知 (3)安装后 3.证书配置 (1)证书配置说明 (2)windows系统安装证书 ...

  2. 【图文详解】scrapy爬虫与动态页面——爬取拉勾网职位信息(2)

    上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要 ...

  3. [爬虫]用python的requests模块爬取糗事百科段子

    虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更 ...

  4. python爬取拉勾网职位数据

    今天写的这篇文章是关于python爬虫简单的一个使用,选取的爬取对象是著名的招聘网站--拉钩网,由于和大家的职业息息相关,所以爬取拉钩的数据进行分析,对于职业规划和求职时的信息提供有很大的帮助. 完成 ...

  5. Python 招聘信息爬取及可视化

    自学python的大四狗发现校招招python的屈指可数,全是C++.Java.PHP,但看了下社招岗位还是有的.于是为了更加确定有多少可能找到工作,就用python写了个爬虫爬取招聘信息,数据处理, ...

  6. Python的scrapy之爬取51job网站的职位

    今天老师讲解了Python中的爬虫框架--scrapy,然后带领我们做了一个小爬虫--爬取51job网的职位信息,并且保存到数据库中 用的是Python3.6  pycharm编辑器 爬虫主体: im ...

  7. Python的scrapy之爬取顶点小说网的所有小说

    闲来无事用Python的scrapy框架练练手,爬取顶点小说网的所有小说的详细信息. 看一下网页的构造: tr标签里面的 td 使我们所要爬取的信息 下面是我们要爬取的二级页面 小说的简介信息: 下面 ...

  8. python网络爬虫之解析网页的XPath(爬取Path职位信息)[三]

    目录 前言 XPath的使用方法 XPath爬取数据 后言 @(目录) 前言 本章同样是解析网页,不过使用的解析技术为XPath. 相对于之前的BeautifulSoup,我感觉还行,也是一个比较常用 ...

  9. python爬虫(三) 用request爬取拉勾网职位信息

    request.Request类 如果想要在请求的时候添加一个请求头(增加请求头的原因是,如果不加请求头,那么在我们爬取得时候,可能会被限制),那么就必须使用request.Request类来实现,比 ...

随机推荐

  1. 快乐编程大本营【java语言训练班】 6课:用java的对象和类编程

    快乐编程大本营[java语言训练班] 6课:用java的对象和类编程 第1节. 什么是对象和类 第2节. 对象的属性和方法 第3节. 类的继承 第4节. 使用举例:创建类,定义方法,定义属性 第5节. ...

  2. 题解 CF1292A 【NEKO's Maze Game】

    有一个结论: 当 \((1,1)\) 不能抵达 \((2,n)\) 时,必定存在一个点对,这两个点的值均为真,且坐标中的 \(x\) 互异,\(y\) 的差 \(\leq 1\) 这个结论的正确性感觉 ...

  3. python图片处理PIL

    一.PIL介绍 PIL中所涉及的基本概念有如下几个:通道(bands).模式(mode).尺寸(size).坐标系统(coordinate system).调色板(palette).信息(info)和 ...

  4. golang-练习ATM --面向对象实现

    package utils import ( "fmt" "strings" ) type StructAtm struct { action int loop ...

  5. Vscode使用

    一. Vscode使用 1. 点击最下方的错误警告显示条,出现四个选项最后一个为终端命令(dos命令) 2. 提交代码输入提交信息,打勾提交,选择类似刷新按钮进行推送 3. 同步代码点击类似刷新按钮即 ...

  6. Android O 8.0 奥利奥

    Android O 8.0 奥利奥 1.画中画, 2.智能文本选择(Smart Text Selection), 3.notification dots, 4.自动填写(Auto-Fill)   4. ...

  7. rfc文档

    你会看到很多网上关于标准的rfc文档. 如何阅读rfc 文档. https://juejin.im/post/5bf1948ff265da61553a6c97 从一个普通的RFC文档上升到Intern ...

  8. oracle数据库重要的查询语句

    查看所有数据文件(dbf文件)的存放位置 SQL> select name from v$datafile; 标红色的为默认表空间文件 SQL> select name from v$da ...

  9. [LeetCode] [链表] 相关题目总结

    刷完了LeetCode链表相关的经典题目,总结一下用到的技巧: 技巧 哑节点--哑节点可以将很多特殊case(比如:NULL或者单节点问题)转化为一般case进行统一处理,这样代码实现更加简洁,优雅 ...

  10. 基于 HTML5 和 Canvas 实现的 3D 垃圾分类系统

    前言 垃圾分类,一般是指按一定规定或标准将垃圾分类储存.分类投放和分类搬运,从而转变成公共资源的一系列活动的总称.分类的目的是提高垃圾的资源价值和经济价值,力争物尽其用.垃圾在分类储存阶段属于公众的私 ...