目录
在 牛客网--求职--校招日程 可以看到秋招的互联网公司。不过里面有一些是亮的就是已开始,灰的就是还没开始或者已经结束。如下图。
一、需求
博主在看完一家公司后,都会把它记在excel中的“已看”列,代表这家公司我已经看过。如下图,只截取部分。注意添加在excel的时候要是公司全名不然后面会很难受哈哈。
然后我现在要看看那些亮的那些我还没看过怎么办呢?很简单,把亮的公司拿到然后再减去excel的“已看过”这列,剩下的就是我还没看的。
二、简单网站分析
网址是这样的,手机版的
我们来F12+刷新看下。
看看xhr中有什么,哦,只有这个。
看看返回的json
再展开发现这些里面装的都是公司信息
name那里就是公司名字,经分析,end等于1或者0,等于1的时候是说明公司是“亮的”,等于0的时候说明公司是“暗的”
所以我们只要把end=0的所有公司名字取出来就好了。
然后在request header 得到请求的url是这样的。
就是https://m.nowcoder.com/school/schedule 加上xhr中文件的名字。经测试不用包装header就可以得到数据。
三、代码
import requests
import json
import pandas as pd
def spider(your_url,excel_path):
s = requests.Session()
r = s.get(your_url)
raw_datas = json.loads(str(r.text))
company = pd.read_excel(io=path,header=0)
company['已看过'] = company['已看过'].astype(str)
checked_company = list(company['已看过'])
light_company = []
for raw_data in raw_datas['data']['companies']:
if raw_data['end'] == 0:
# print('{}'.format(raw_data['name']))
light_company.append(raw_data['name'].upper())
for checked in checked_company:
if checked.upper() in light_company:
light_company.remove(checked.upper())
print(f'你还没看的公司有{len(light_company)}家,如下:\n{light_company}')
四、代码输出
不过,想完成这个,首先你得有个excel记录你看过的公司- - 而且你看过一个新的后,你就把它添加进“已看过”那一列。完。