爬虫实战——爬取杭电就业信息网招聘信息
杭电宣讲会信息爬取
爬取内容: 宣讲单位,宣讲时间,所在学校,宣讲地点,单位简介等
项目需求
- 实现两层网页的信息爬取,并将爬取的信息进行整合保存到 excel 文件中。
(1) 基础:爬取一个外层页中,所有内层页的信息
(2) 进阶:爬取多个外层页中, 所有内层页的信息 - 每个题目中, 至少爬取上述给定爬取内容中的五项。
- 自学数据可视化方法,将爬取结果以曲线图、 柱状图等方式显示。
- 自学 scrapy 库,尝试将以上题目用 scrapy 框架实现
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 2 20:29:39 2019@author: 1
"""import requests # 导入网页请求库
from bs4 import BeautifulSoup # 导入网页解析库
import pandas as pd
import json
import re#http://career.hdu.edu.cn/module/getcareers?start_page=1&k=&panel_name=&type=inner&day=&count=15&start=1&_=1572698708166 第一页
#http://career.hdu.edu.cn/module/getcareers?start_page=1&k=&panel_name=&type=inner&day=&count=15&start=2&_=1572698708167 第二页
#http://career.hdu.edu.cn/module/getcareers?start_page=1&k=&panel_name=&type=inner&day=&count=15&start=3&_=1572698708168 第三页
#http://career.hdu.edu.cn/module/careers?menu_id=6438#http://career.hdu.edu.cn/detail/career?id=career_talk_id 二级网页
# 发起请求
def start_requests(url):#print(url) # 查看在抓取哪个链接r = requests.get(url)return r.text# 解析一级网页,获取career_talk_id列表
def get_id(text):#soup = BeautifulSoup(text, 'html.parser')list_id=[]content=json.loads(text)for item in content['data']:list_id.append(item['career_talk_id'])return list_id#返回序列# 解析二级网页,获取公司简介信息
def parse_page(text):mydict={}soup = BeautifulSoup(text, 'html.parser')pattern=re.compile(r'[\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b\u4e00-\u9fa5\d+]')#data_name=soup.find('h1',class_="dm-text",style="font-weight:normal;").text.split('宣讲单位:')[1]data_name=pattern.findall(soup.find('h1',class_="dm-text",style="font-weight:normal;").text.split('宣讲单位:')[1])data_company=pattern.findall(str(soup.select('#data_details > div.main > div > div:nth-child(2) > div.dm-cont')))#div class="dm-cont" style="font-size:14px;line-height:22px;"data_time=soup.find_all('p',class_="dm-text")[0].text.split('宣讲时间:')[1]data_school=soup.find_all('p',class_="dm-text")[1].text.split('所在学校:')[1]data_place=soup.find_all('p',class_="dm-text")[2].text.split('宣讲地点:')[1]str_data=''.join(data_company)str_name=''.join(data_name)mydict['宣讲地点']=data_placemydict['公司简介']=str_data.replace('1422','')mydict['宣讲学校']=data_schoolmydict['宣讲单位']=str_namemydict['宣讲时间']=data_timereturn mydict#返回字典#数据整理
def get_result():for i in range(1572698708166, 1572698708168):url = 'http://career.hdu.edu.cn/module/getcareers?start_page=1&k=&panel_name=&type=inner&day=&count=15&start={}&_={}'.format(i-1572698708165,i)text = start_requests(url)list_id= get_id(text) # 解析一级页面,获取二级页面的career_talk_idfor career_id in list_id: # 解析二级页面 url_2='http://career.hdu.edu.cn/detail/career?id={}'.format(career_id)page = start_requests(url_2)mydict= parse_page(page)#dict的信息result_list.append(mydict)return result_list#返回列表 #运行,可视化+写入excel
if __name__ == '__main__':result_list=[]result_list=get_result()df=pd.DataFrame(result_list)df['宣讲时间'].value_counts().plot(kind='bar')df.to_excel('data.xlsx')
最终得到data.xlsx和一个宣讲时间数量统计图(属实无聊,但是作业要做hhhhh)
爬虫实战——爬取杭电就业信息网招聘信息相关推荐
- 【爬虫基础】爬取学校官网分页招聘信息
**爬取某学校就业网站招聘信息** 用到的包 from urllib.request import urlopen import requests import json 一.获取不同页面的url 在 ...
- node 爬虫 实战 - 爬取拉勾网职位数据
node 爬虫 实战 - 爬取拉勾网职位数据,主要想把数据用于大数据学习,到时候大数据分析可以自己分析一下职位的情况,和比较一些我现在的职位在深圳乃至全国的开发人员水平. 涉及到的技术栈:node.j ...
- Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)
Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...
- python爬虫实战---爬取大众点评评论
python爬虫实战-爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...
- python爬虫实战-爬取视频网站下载视频至本地(selenium)
#python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...
- python爬虫实战-爬取微信公众号所有历史文章 - (00) 概述
http://efonfighting.imwork.net 欢迎关注微信公众号"一番码客"获取免费下载服务与源码,并及时接收最新文章推送. 最近几年随着人工智能和大数据的兴起,p ...
- Scrapy 爬虫实战-爬取字幕库
Scrapy 爬虫实战-爬取字幕库 1.首先,创建Scrapy框架 创建工程 scrapy startproject zimuku创建爬虫程序 cd zimuku scrapy genspider z ...
- 爬虫练习- 爬取转转网二手市场商品信息
前言: 使用多进程爬虫方法爬取转转网二手市场商品信息,并将爬取的数据存储于MongoDB数据库中 本文为整理代码,梳理思路,验证代码有效性--2020.1.18 环境: Python3(Anacond ...
- Python笔记-爬取Boss直聘的招聘信息
Python笔记-爬取Boss直聘的招聘信息 最近迷上了爬虫,爬取招聘信息,存在MongoDB上 代码思路和上一篇爬取酷狗TOP500差不多,但是在使用CSS选择器的时候,有两组信息是连在一起,所以使 ...
最新文章
- [hadoop源码阅读][9]-mapreduce-概论
- 五. python的日历模块
- sql service 从创建访问用户到数据库访问 【SQL】
- C++和C#实现剪切板数据交互
- kdbchk: the amount of space used is not equal to block size
- java定时器报错,定时器设置报错
- android 服务自动结束,Android服务自动停止
- Flink java wordcount案例(批处理、流处理)
- Java中子程序输出到输出文件中_Fortran 90中子例程和函数中的参数/变量的INTENT的含义...
- Qt的project文件的设置相关
- java写企业员工信息管理系统
- python黑屏改成白底_Python 进行黑屏 PNR 的提取
- java购物结算_Java编写网上超市购物结算功能程序
- 用JS实现贪吃蛇小游戏
- android su 程序,android 开发 制作自己的su
- 【调研】国内芯片公司对于存算一体芯片的相关调研
- Unet++语义分割网络(网络结构分析+代码分析)
- 【python-02】
- SpringBoot 日志(学习笔记13)
- Spring之IOC的注入方式总结