爬取中山大学海洋科学学院教师的相关信息

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还没有解决,这样一个问题一个问题的到来,还是有收获的。(一个静态页面的爬取把我搞成这个样子,我傻了。)

 

posted @ 2021-03-17 19:52  吃心王  阅读(190)  评论(0)    收藏  举报