使用python爬取学校门户网站相关信息并格式化输出

本文档介绍如何使用Python的requests和BeautifulSoup库抓取并解析学校信息门户的登录及内容。通过分析登录过程获取cookie,实现无须跳转的页面请求,解决了编码问题以正确处理中文数据。
摘要由CSDN通过智能技术生成

其实真正来说我不是很会写技术文档,我觉得我先从这里开始吧。俗话说的好万事开头难,那我就开始写我的第一份技术文档了。

现在我做的一些事情都是在熟悉技术。我在学习python,并且在用python处理网页请求相关的内容。

我们学校的信息门户是必需要登录才能去看的。而且网页模块的排版比较不友好,很多重要信息例如讲座的通知,后勤的断水断电的通知没有办法很方便的及时获知。受到我舍友(手动@杨大潍)的启发,我就开始在期末花了一点时间做了这么一个脚本。以下我就将我在做相关工作时候遇到的问题做一下梳理和总结吧

使用到的python库:

首先我使用的是requests的库,相比于其他python的网络库来说,requests更加易用,简单。同时也比较适合我这样的小白。requests常用的方法就是get和post。requests.get返回的是收到的GET到的网页内容。

import requests
r = requests.get(url, headers, data)
print r.text

就是这么easy~不过requests的库需要点击这里下载。至于安装方法,直接就是在winPowershell里或者terminal里输入:

python setup.py install 

大部分在信息门户上的信息都是需要一定的用户权限来获得。一般的时候我们需要一个账号来登入网站才能够获得我们想要的信息的。由于我们学校的信息门户十分的简陋,他的用户认证手段比较老旧,同时这也方便我们处理。

我们在这里使用了chrome的开发者工具来记录GET请求的data结构。

好的,以下是爬取51job网站职位信息并绘图的步骤: 1. 确定要爬取的职位和地区,以及需要的数据字段。可以使用Python中的requests、beautifulsoup4等库进行网页解析爬取。 2. 通过分析网页结构,确定要爬取的数据在哪个标签中,例如可以使用BeautifulSoup库中的find_all方法找到所有职位信息所在的标签。 3. 将爬取到的数据存储到本地文件或数据库中,可以使用Python中的csv、pandas等库进行数据处理和存储。 4. 对爬取到的数据进行分析和绘图,可以使用Python中的matplotlib、seaborn等库进行数据可视化。 以下是一个简单的示例代码,用于爬取51job网站上的Python职位信息并绘制饼图: ```python import requests from bs4 import BeautifulSoup import pandas as pd import matplotlib.pyplot as plt # 设置请求头,模拟浏览器访问 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 构造请求url url = 'https://search.51job.com/list/010000,000000,0000,00,9,99,Python,2,{}.html' # 循环爬取所有页面的职位信息 data = [] for i in range(1, 6): res = requests.get(url.format(i), headers=headers) soup = BeautifulSoup(res.text, 'html.parser') job_list = soup.find_all('div', class_='el') for job in job_list: job_name = job.find('a', target='_blank').text.strip() company_name = job.find('span', class_='t2').text.strip() salary = job.find('span', class_='t4').text.strip() if salary == '面议': continue data.append({'job_name': job_name, 'company_name': company_name, 'salary': salary}) # 将爬取到的数据存储到本地文件中 df = pd.DataFrame(data) df.to_csv('jobs.csv', index=False) # 对爬取到的数据进行分析和绘图 df = pd.read_csv('jobs.csv') df['salary'] = df['salary'].apply(lambda x: int(x.split('-')[0])) df['salary_range'] = pd.cut(df['salary'], [0, 5000, 10000, 15000, 20000, 30000, 50000, 100000]) salary_count = df['salary_range'].value_counts() plt.pie(salary_count, labels=salary_count.index, autopct='%1.1f%%') plt.title('Python职位薪资分布') plt.show() ``` 这段代码会爬取前5页的Python职位信息,并将职位名称、公司名称和薪资存储到本地文件中。然后,对薪资进行分段处理,统计每个薪资段的职位数量,并绘制饼图展示。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值