2017年6月,花了大概一周的时间学习了以下内容,并基于此写了一个小项目。这里对其进行总结,说明其中遇到的问题和解决方案以及下一步计划。

学习的内容和网址:

斯巴达网站

斯巴达视频

python零基础爬虫实战

参考的网站:

Beautiful Soup文档

python3 urllib

需要知道的知识:

网页的基本构成,

一些数据包的安装,

python的语法,

网页下载与解析,

Beautiful Soup的使用,

urllib的使用,

利用pandas将字典保存成矩阵并存储成csv格式等。

遇到的问题及解决方法

1、所爬取的网页需要登录或验证码等:利用模拟登陆的方法。具体方法视频中都有。

2、网页出现乱码:原因是有的网页返回的格式是字节,需要利用contents=contents.decode('utf-8')转成万国码。

3、模拟登陆过程中为了避免服务器知道请求方是机器,选择多个请求终端随机选取。random_header = random.choice(headers)

4、网址中含有中文,复制过来后变成ascii码。利用quote(url, safe=string.printable)只对中文进行ascii码转换

5、将爬取的数据保存成.csv格式:利用pandas方法,将字典转成矩阵的形式

data = get_link_info(url)  
            df = df.append(data,ignore_index=True)        
            df.to_csv('嵌入式开发工程师.csv')

写在代码前面的话:

@智联招聘职位搜索与数据获取
@拉勾网 专注于互联网招聘的网站:https://www.lagou.com/ 
@拉勾网 招聘的公司较少,且大部分需要有经验的公司
@拉勾网 查找限制选择性强
@BOSS直聘 查找限制选择性强 对象大众化 http://www.zhipin.com
@猎聘 更专业的招聘网站 有专门面向学生的招聘通道 https://campus.liepin.com/
@应届生网 页面布局太烂,不建议爬取。不过有专门针对应届生的招聘会论坛等信息,确实不错 http://www.yingjiesheng.com/
@由于拉钩和猎聘职位较少,而且可以满足高精确查找,这里只提供网址,自行搜索。

@ python3.5

代码如下:看不懂的地方可以留言,每天和电脑打交道,会及时回复。

# -*- coding: utf-8 -*-
"""
Created on Wed Jun  7 09:21:52 2017@author: qiu
"""
'''
@智联招聘职位搜索与数据获取
@拉勾网 专注于互联网招聘的网站:https://www.lagou.com/
@拉勾网 招聘的公司较少,且大部分需要有经验的公司
@拉勾网 查找限制选择性强
@BOSS直聘 查找限制选择性强 对象大众化 http://www.zhipin.com
@猎聘 更专业的招聘网站 有专门面向学生的招聘通道 https://campus.liepin.com/
@应届生网 页面布局太烂,不建议爬取。不过有专门针对应届生的招聘会论坛等信息,确实不错 http://www.yingjiesheng.com/
@由于拉钩和猎聘职位较少,而且可以满足高精确查找,这里只提供网址,自行搜索。
***********************@智联招聘职位搜索与数据获取***************************
'''import urllib
from urllib.parse import *
from bs4 import BeautifulSoup
import string
import random
import pandas as pdheaders=["Mozilla/5.0 (Windows NT 6.1; Win64; rv:27.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36""Mozilla/5.0 (Windows NT 10.0; WOW64; rv:27.0) Gecko/20100101 Firfox/27.0""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36""Mozilla/5.0 (Windows NT 10.0; WOW64; rv:10.0) Gecko/20100101 Firfox/10.0""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/21.0.1180.110 Safari/537.36""Mozilla/5.0 (X11; Ubuntu; Linux i686 rv:10.0) Gecko/20100101 Firfox/27.0""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/34.0.1838.2 Safari/537.36""Mozilla/5.0 (X11; Ubuntu; Linux i686 rv:27.0) Gecko/20100101 Firfox/27.0""Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"]
def get_content(url,headsers):'''@url:需要登录的网址@headers:模拟的登陆的终端*********************模拟登陆获取网址********************'''random_header = random.choice(headers)req = urllib.request.Request(url)req.add_header("User-Agent",random_header)req.add_header("Get",url)req.add_header("Host","sou.zhaopin.com")req.add_header("refer","http://sou.zhaopin.com/")html = urllib.request.urlopen(req)contents = html.read()#判断输出内容contents是否是字节格式if isinstance(contents,bytes):#转成字符串格式contents=contents.decode('utf-8')else:print('输出格式正确,可以直接输出')
##输出的是字节格式,需要将字节格式解码转成’utf-8‘return (contents)def get_content1(url,headsers):'''@url:需要登录的网址@headers:模拟的登陆的终端*********************模拟登陆获取网址********************'''random_header = random.choice(headers)req = urllib.request.Request(url)req.add_header("User-Agent",random_header)req.add_header("Get",url)req.add_header("Host","jobs.zhaopin.com")req.add_header("refer","http://sou.zhaopin.com/jobs/searchresult.ashx")html = urllib.request.urlopen(req)contents = html.read()#判断输出内容contents是否是字节格式if isinstance(contents,bytes):#转成字符串格式contents=contents.decode('utf-8')else:print('输出格式正确,可以直接输出')
##输出的是字节格式,需要将字节格式解码转成’utf-8‘return (contents)    def get_links_from(job, city, page):'''@job:工作名称@city:网址中城市名称@page:表示第几页信息@urls:所有列表的超链接,即子页网址****************此网站需要模拟登陆**********************'''urls=[]for i in range(page):url = "http://sou.zhaopin.com/jobs/searchresult.ashx?jl={}&kw={}&p={}".format(str(city),str(job),i) url = quote(url, safe=string.printable)info = get_content(url,headers)soup = BeautifulSoup(info,"lxml")#设置解析器为“lxml”link_urls = soup.select('td.zwmc a')for url in link_urls:      urls.append(url.get('href'))return (urls)#url = "http://s.yingjiesheng.com/result.jsp?keyword=%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98&city=217&start=0&period=0&sort=score&jobtype=1"
#get_links_from('南京','数据挖掘', 5)
def get_link_info(url):'''@爬取的地址*****************得到此网站的有用信息****************'''    info = get_content1(url,headers)soup = BeautifulSoup(info,"lxml")#设置解析器为“lxml”occ_name = soup.select('div.fixed-inner-box h1')[0]com_name = soup.select('div.fixed-inner-box h2')[0]welfare = soup.select('div.welfare-tab-box')[0]wages = soup.select('div.terminalpage-left strong')[0]date = soup.select('div.terminalpage-left strong')[2]exper = soup.select('div.terminalpage-left strong')[4]num = soup.select('div.terminalpage-left strong')[6]area = soup.select('div.terminalpage-left strong')[1]nature = soup.select('div.terminalpage-left strong')[3]Edu = soup.select('div.terminalpage-left strong')[5]cate = soup.select('div.terminalpage-left strong')[7]com_scale = soup.select('ul.terminal-ul.clearfix li strong')[8]com_nature = soup.select('ul.terminal-ul.clearfix li strong')[9]com_cate = soup.select('ul.terminal-ul.clearfix li strong')[10]com_address = soup.select('ul.terminal-ul.clearfix li strong')[11]data = {"拉勾网":'https://www.lagou.com/', "猎聘":"https://campus.liepin.com/","应届生":"http://www.yingjiesheng.com/","网址":url,"工作名称":occ_name.text.strip(),"公司名称":com_name.text,"福利":welfare.text.strip(),"月工资":wages.text.strip(),"发布日期":date.text.strip(),"经验":exper.text.strip(),"人数":num.text.strip(),"工作地点":area.text.strip(),"工作性质":nature.text.strip(),"最低学历":Edu.text.strip(),"职位类别":cate.text.strip(),"公司规模":com_scale.text.strip(),"公司性质":com_nature.text.strip(),"公司行业":com_cate.text.strip(),"公司地址":com_address.text.strip()}return (data)
#url = "http://jobs.zhaopin.com/145913042250065.htm"
#get_link_info(url)def get_links_all_info(job, city, page):urls = get_links_from(job, city, page)df = pd.DataFrame({"网址":[],"工作名称":[],"公司名称":[],"福利":[],"月工资":[],"发布日期":[],"经验":[],"人数":[],"工作地点":[],"工作性质":[],"最低学历":[],"职位类别":[],"公司规模":[],"公司性质":[],"公司行业":[],"公司地址":[],"拉勾网":[], "猎聘":[],"应届生":[]})links = []for url in urls:if "xiaoyuan" in url:links.append(url)columns = ['校园招聘地址']labeled_df = pd.DataFrame(columns=columns, data=links)labeled_df.to_csv('校园招聘嵌入式开发工程师地址.csv')else:data = get_link_info(url)#print (data)df = df.append(data,ignore_index=True)#print (df)df.to_csv('嵌入式开发工程师.csv')get_links_all_info('嵌入式开发工程师', '南京', 3)

总结:

当然这种爬虫方式还是最简单的,用的是最基础的方法。如果数据量大,可以考虑使用爬虫框架scrapy。

我学爬虫主要是为了在网上获取一些资源方便不打算作为以后的工作。所以框架也不打算学习了,如果以后工作需要,以后再学习。

学爬虫还有一个目的,就是学习python语言,算是python的一个小的应用了。

下一步,我可能会去爬取招聘会,面经等信息,便于以后找工作吧。

最后,祝每位走在自己梦想路上的人,一帆风顺,早日成功!

python3小项目——爬取招聘信息(智联招聘)相关推荐

  1. Python网络数据爬取及分析-智联招聘

    python网络数据爬取及分析-智联招聘 一. 数据爬取 智联招聘是一家面向大型公司和快速发展的中小企业提供一站式专业人力资源的公司,可在智联招聘网站上根据不同城市.不同职位需求搜索得到相关招聘信息. ...

  2. python3小项目——爬取智联招聘信息(二)

    这两天,心血来潮又把前几天的爬取招聘信息程序丰富了一下,是对爬取到的信息再处理以及分类保存. 具体功能: 将全部信息保存成矩阵形式,去除无用信息,并在当前目录下生成文件夹并此文件夹下把信息分类保存成. ...

  3. scrapy同时爬取51job和智联招聘

    scrapy同时运行2个及以上爬虫方法 每个爬虫创建对应的运行文件,然后运行每个文件.每个爬虫的数据模型要相同. run1.py # -*- coding:utf-8 -*- from scrapy ...

  4. 智联招聘数据爬取准备(1)-智联招聘搜索列表源码解析

    网页源码解析 - 智联招聘搜索列表 一开始必须要解析智联招聘搜索列表页,从这里更方便实现各种深层级数据抓取. 网页地址是: http://sou.zhaopin.com/jobs/searchresu ...

  5. 新手爬取51job,智联,boss网站职位信息总结和代码(小杜总结)

    爬取要求: (1) 使用合适的数据保存手段保存爬取数据 (2) 记每条数据的爬取时间 (3) 实现数据的增量爬取 (4) 实现同时基于关键字和页面 URL 的去重元数据说明: 一 统一注意事项或建议 ...

  6. python小爬虫(爬取职位信息和博客文章信息)

    1.python爬取招聘信息 简单爬取智联招聘职位信息(仅供学习) # !/usr/bin/env python # -*-coding:utf-8-*- """ @Au ...

  7. python3爬虫系列08之新版动态智联招聘并存取数据库进行可视化分析

    python3爬虫系列08之新版动态智联爬取和存取数据库进行可视化分析 本篇是面向新版动态智联爬虫,数据存储到Mysql数据库,最后使用pyecharts读取并可视化分析. 在这之前,上一篇说的是 p ...

  8. 爬虫urllib库小项目---爬取豆瓣读书网的海报和书籍名称并存储

    url = "https://book.douban.com/latest?icn=index-latestbook-all" 小项目需求: 1.图书海报 2.图书海报存储到本地地 ...

  9. python爬虫小项目: 爬取百度贴吧帖子

    本文同样是基于静觅系列的python3.x版,具体步骤请前往静觅系列学习 关于encode()与decode()的问题:可以参照xanderzhang 及921800467的专栏 可完成静觅系列相同功 ...

最新文章

  1. NeurIPS 2021论文放榜!清华投稿90篇排名第5,北大第9
  2. 邬贺铨院士:边缘计算“新十问”
  3. Linux 命令学习笔记
  4. 高德地图横屏不显示服务器,高德地图不能横屏!
  5. Android通过NTP服务器取得UTC标准时间
  6. MindNode for Mac(思维导图)下载
  7. redis客户端使用密码
  8. 蓝桥杯-明码 bitset初识
  9. 易辅客栈第六套零基础开发商业脚本_网页游戏篇
  10. 【毕设论文——必修篇】论文撰写-宝藏工具网址
  11. 高智商与低智商的区别_体内平衡与智力的定义
  12. Windows下使用gFortran,VScode+MinGW
  13. 厦门理工嵌入式开发LPC1768开发板教程
  14. 如何将网址放到桌面并修改桌面快捷方式的图标
  15. python1到100求和编程递归_编写一个递归函数计算从1加到100的和
  16. 101页下载 机器学习、深度学习绘图模板.ppt
  17. ​草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码
  18. 计算机网络【1】 TCP/IP
  19. 对账与清分、清算、结算
  20. android获取一天的毫秒时间,Android关于获取时间的记录(小结)

热门文章

  1. Docker+Frp+NGinx+云服务器 实现HTTPS内网穿透
  2. 细细探究MySQL Group Replicaiton — 配置维护故障处理全集
  3. Hystrix 1.5 滑动窗口实现原理总结
  4. 幻影显示连接不到服务器,幻影纹章怎么进不去 无法连接服务器及解决方案
  5. Python学习教程:数据类型—字符串大总结
  6. 虚幻引擎:游戏设计(FPS项目) 一
  7. DedeCMS织梦为文章图片自动添加ALT标签
  8. 重装Windows,只用53款全免费软件
  9. python财务报表书籍_清华大学出版社-图书详情-《从零开始学看财报(白金版)》...
  10. Python :销售提成