爬虫抓取个人课表

发表于 Python, 爬虫, 程序语言 2017-01-09 阅读数: 214

今天突发奇想爬了一次课表。或许以后会有大作用。

语言:python包:BeautifulSoup,requests, re.

除了re,其他的都是以前讲过的,可以参加之前的推送:<技术向>爬取一个网站的信息

re是python进行正则表达式所需要的包,我们爬取完课表需要用正则表达式进行格式化。

下面开始呗。

我们需要先得到cookie、User-Agent、Referer.Referer参数的作用:告诉服务器我是从哪个页面链接过来的User-Agent参数的作用:判断客户端使用的是什么浏览器的版本及类型

首先登录你的教务网站,提取Cookie和User-Agent信息:

爬虫抓取个人课表

'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.90 Safari/537.36''Cookie': 'ASP.NET_SessionId=dvzzem55duqbn245omfbmi55'

然后我们还需要课表网站的链接,右键学生个人课表,复制链接地址:

http://jwc.scnu.edu.cn/xskbcx.aspx?xh='这里会是你的学号'&xm='你的名字'&gnmkdm=N121603

接下来就可以正式开始了:

首先引入包

from bs4 import BeautifulSoup

import requests

import re

编写要传输的headers信息(以我本次操作为例)

headers = {

    'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.90 Safari/537.36',

    'Cookie': 'ASP.NET_SessionId=dvzzem55duqbn245omfbmi55',

    'Referer':'http://jwc.scnu.edu.cn/xs_main.aspx?xh=你的学号'

}

这里为什么要添加Referer呢?这是经验之谈,试了很多次之后我发现必须让网站知道我是从这个网站中出发的,否则会爬取失败。

发送请求并提取信息

url = 'http://jwc.scnu.edu.cn/xskbcx.aspx?xh=学号&xm=%名字&gnmkdm=N121603'

wb_data = requests.get(url,headers=headers)

soup = BeautifulSoup(wb_data.text,'lxml')

这样你会得到一个html的代码。我们需要对它进行正则表达式匹配,把我们不需要的信息全都去掉。

这个pattern就是提取尖括号内的东西,我们知道html表格中文字是夹在文字中的,我们把尖括号内的东西全部替换掉就行啦。

pattern = re.compile(r'<[^>]+>')

我们用谷歌浏览器提取表格的标签,发现是table1

爬虫抓取个人课表

提取信息:

needs = soup.select('#Table1')

最后打印即可,值得注意的是,这里需要把表格转换成字符串。

print(pattern.sub("",needs.__str__()))

效果如图:

爬虫抓取个人课表

欢迎关注微信公众号:幻象客

网站:https://www.huanxiangke.com

幻象客 二维码

Add comment