想法与目的
考研的小伙伴们大家好,受今年疫情影响,2020考研的复试到5月份才进行,北邮网研院的计算机科学与技术专业的分数线也提高了12分,到达了312分,不得不找调剂的小伙伴就会面临一个问题——提前联系导师。而北邮网研院导师的介绍是在中心分组里面的,报考的时候却根本不知道老师是属于哪个中心的。那么就产生了一个想法,如果能获取网研院官网上的导师联系方式,那是不是会方便很多呢?(PS:获取了导师的联系方式,也就可以去实现自动给导师发邮件的功能了,哈哈哈,不用做一个没有感情的发邮件机器了)
所用环境
window系统
python 3.7版本
pycharm编辑器
第三方依赖库 | 作用 |
---|---|
urllib | 网址解析 |
requests | 网络请求 |
scrapy | 使用xpath表达式进行信息提取(scrapy安装有点复杂,也可以使用别的库) |
xlsxwriter | 将信息保存到Excel表格中(也可以保存到txt文件中) |
代码
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:tzy
@File:爬取北邮网研院导师信息.py
@Time:2020/5/8 12:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
参考文档
python:往列表中添加字典时碰到的问题https://blog.csdn.net/Sheldomcooper/article/details/82258006
【Python实例学习】用Python的xlsxwriter模块操作Excel表格,包括写入数据、样式设置、插入图片等https://blog.csdn.net/woshiyigerenlaide/article/details/103976391
"""
import re
from urllib import parse
import requests
from scrapy import Selector
import xlsxwriter
#定义链接,用于后文拼接完整URL
DOMAIN = 'https://int.bupt.edu.cn'
#获取导师的中心信息,存储到teacherList中
def getTeacherCentre(url, teacherList):
#每个导师信息分别存储在teacherDict中
teacherDict = dict()
#网络请求
res_text = requests.get(url).text
#使用xpath表达式进行分析
sel = Selector(text=res_text)
divs = sel.xpath('//div[@class="padl20 ovhi clear"]/div')
for div in divs:
#所属中心的访问链接以及名称
centre_url = div.xpath('./a[1]/@href').extract()[0]
centre_url = parse.urljoin(DOMAIN, centre_url)
centre_name = div.xpath('./a[1]/text()').extract()[0]
teacherDict['centre_url'] = centre_url
teacherDict['centre_name'] = centre_name
print('centre_url:{}'.format(centre_url))
print