爬取中山大学海洋科学学院教师的相关信息
0.由于女朋友接了一个学校图书馆一个信息整合的工作,就是将一些高校的教师信息整合(所属学校,教师姓名,所属学院,教授专业,职称,相关头衔以及教师信息主页的url),其中教授的专业以及相关头衔并没有明文显示还是需要后期的补充,所以就只爬取所属学校,教师姓名,所属学院,职称,教师信息主页的url。
1.所用方法:requests库;xpath语言;openpy库(将数据写入到excel中)
2.注意事项:在最初听到女朋友的请求时,我感觉这个任务并不是很难,在寒假我第一次爬取这个网站,失败了,后面一个月左右都是失败,一直搞不懂为什么。甚至与在b站问过一个up主,但是他和我一样也是没有能够爬取下来,得到的都是一段很乱的没有一个中文的html形式的。到后来偶然的一次,我爬取成功了,我做的与以前唯一不同的就是我是在最后填写cookie。后来多爬几次发现这个学校的网站cookie过期时间很快,而且这个网站的爬取速度非常慢,差不多要半分钟才能爬取一个页面,如果再碰到翻页的或者是按照职称分开的那种真的是爬到头大。但是当我今天像往常一样爬取的时候,输入cookie后,运行,不到一秒钟,100多位教师信息全部得到……(希望大牛看到我上面的问题能解释一下,我尝试使用过session,但是结果和没有使用cookie一样)
3.爬取操作
import requests from lxml import etree import openpyxl from openpyxl import load_workbook //导入相关库 need_zhicheng = ["教授","副教授","助理教授","讲师/专任教员","研究员","副研究员"]//只有满足这些职称的老师的信息才是我需要的 url = 'http://marine.sysu.edu.cn/teachers' //发起请求的地址 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.81', 'Cookie': '', 'Host': 'marine.sysu.edu.cn' }//对于headers中的参数,只要上述三个即可,我记得缺少其中任何一个都是会返回上面我说的那种情况 wb = openpyxl.load_workbook('海洋科学学院.xlsx') ws = wb.active //打开一个excel文件,因为要有相关表头,但是你也可以创建一个文件,然后使用append加入表头 cookie = input("请输入一个cookie:") headers["Cookie"] = cookie //我喜欢使用这种方法写入cookie,因为原来我爬取的页面是很多张,一个cookie时间不够或者说次数不够,我就每次都输入一个,但是这个页面有全部老师,这样爬着真爽 response = requests.get(url=url,headers=headers) response.encoding = 'utf-8' page_text = response.text tree = etree.HTML(page_text) div_tag = tree.xpath('//*[@id="qt-teachers_full_department-ui-tabs1"]/div/div[2]/div/div') //上面就是一系列通常的操作了 for div in div_tag: name = div.xpath('./div/div/div[2]/h4/a/text()')[0] zhicheng = div.xpath('./div/div/div[2]/p/text()')[0] it_url = 'http://marine.sysu.edu.cn'+div.xpath('./div/div/div[2]/h4/a/@href')[0] if zhicheng in need_zhicheng://判断职称是否是我需要的 ws.append(['中山大学',name,'海洋科学学院',zhicheng,it_url])#'http://atmos.sysu.edu.cn'+div.xpath('')[0] wb.save('海洋科学学院.xlsx')//将excel保存。
4.其实今天爬取的时候我看到一秒结束的时候我是震惊的,毕竟这个问题也是困扰了我近两个月,一开始的爬取不到页面,后来的爬取速度太慢,再到现在cookie还没有解决,这样一个问题一个问题的到来,还是有收获的。(一个静态页面的爬取把我搞成这个样子,我傻了。)

浙公网安备 33010602011771号