杭电宣讲会信息爬取

爬取内容: 宣讲单位,宣讲时间,所在学校,宣讲地点,单位简介等
项目需求

  1. 实现两层网页的信息爬取,并将爬取的信息进行整合保存到 excel 文件中。
    (1) 基础:爬取一个外层页中,所有内层页的信息
    (2) 进阶:爬取多个外层页中, 所有内层页的信息
  2. 每个题目中, 至少爬取上述给定爬取内容中的五项。
  3. 自学数据可视化方法,将爬取结果以曲线图、 柱状图等方式显示。
  4. 自学 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)

爬虫实战——爬取杭电就业信息网招聘信息相关推荐

  1. 【爬虫基础】爬取学校官网分页招聘信息

    **爬取某学校就业网站招聘信息** 用到的包 from urllib.request import urlopen import requests import json 一.获取不同页面的url 在 ...

  2. node 爬虫 实战 - 爬取拉勾网职位数据

    node 爬虫 实战 - 爬取拉勾网职位数据,主要想把数据用于大数据学习,到时候大数据分析可以自己分析一下职位的情况,和比较一些我现在的职位在深圳乃至全国的开发人员水平. 涉及到的技术栈:node.j ...

  3. Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)

    Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...

  4. python爬虫实战---爬取大众点评评论

    python爬虫实战-爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...

  5. python爬虫实战-爬取视频网站下载视频至本地(selenium)

    #python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...

  6. python爬虫实战-爬取微信公众号所有历史文章 - (00) 概述

    http://efonfighting.imwork.net 欢迎关注微信公众号"一番码客"获取免费下载服务与源码,并及时接收最新文章推送. 最近几年随着人工智能和大数据的兴起,p ...

  7. Scrapy 爬虫实战-爬取字幕库

    Scrapy 爬虫实战-爬取字幕库 1.首先,创建Scrapy框架 创建工程 scrapy startproject zimuku创建爬虫程序 cd zimuku scrapy genspider z ...

  8. 爬虫练习- 爬取转转网二手市场商品信息

    前言: 使用多进程爬虫方法爬取转转网二手市场商品信息,并将爬取的数据存储于MongoDB数据库中 本文为整理代码,梳理思路,验证代码有效性--2020.1.18 环境: Python3(Anacond ...

  9. Python笔记-爬取Boss直聘的招聘信息

    Python笔记-爬取Boss直聘的招聘信息 最近迷上了爬虫,爬取招聘信息,存在MongoDB上 代码思路和上一篇爬取酷狗TOP500差不多,但是在使用CSS选择器的时候,有两组信息是连在一起,所以使 ...

最新文章

  1. [hadoop源码阅读][9]-mapreduce-概论
  2. 五. python的日历模块
  3. sql service 从创建访问用户到数据库访问 【SQL】
  4. C++和C#实现剪切板数据交互
  5. kdbchk: the amount of space used is not equal to block size
  6. java定时器报错,定时器设置报错
  7. android 服务自动结束,Android服务自动停止
  8. Flink java wordcount案例(批处理、流处理)
  9. Java中子程序输出到输出文件中_Fortran 90中子例程和函数中的参数/变量的INTENT的含义...
  10. Qt的project文件的设置相关
  11. java写企业员工信息管理系统
  12. python黑屏改成白底_Python 进行黑屏 PNR 的提取
  13. java购物结算_Java编写网上超市购物结算功能程序
  14. 用JS实现贪吃蛇小游戏
  15. android su 程序,android 开发 制作自己的su
  16. 【调研】国内芯片公司对于存算一体芯片的相关调研
  17. Unet++语义分割网络(网络结构分析+代码分析)
  18. 【python-02】
  19. SpringBoot 日志(学习笔记13)
  20. Spring之IOC的注入方式总结

热门文章

  1. JAVA强制类型转换常见错误
  2. (一百三十五)Android O探索WLAN扫描(WIFI SCAN ALWAYS)
  3. ffmpeg+easydarwin把rtmp流转换成m3u8
  4. Dota2世界冠军OG被AI碾压,全程人类只推掉两座外塔 | 广东省智能创新协会
  5. 人话解读LGPLv3
  6. Redis数据类型——hash
  7. PTA 7-43 币值转换 (20 分)
  8. VS2019安装与使用教程
  9. 优链时代入围Internet Deep 【2022元宇宙TOP500】榜!
  10. Java并发编程实践之并发理论基础(一)