如何爬取icourse163 中国慕课上课程信息(上),

中国大学MOOC网上有着特别完善的课程信息,我觉得这是一份可以让我们充分利用的资源

那么,接下来的问题就是我们该如何爬取这里的资源

选择其中的计算机课程进行尝试

import requests
from bs4 import BeautifulSoup

import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')

r=requests.get('https://www.icourse163.org/channel/3002.htm')
r.encoding=r.apparent_encoding
result=r.text
bs=BeautifulSoup(result,'html.parser')
print(bs.prettify())

按理说可以通过上述代码就可以很容易地爬取出该页面的源代码,但最后发现这里面没有正常的显示课程信息。因为这些课程列表信息是通过js加载的数据,js需要浏览器才能加载出来,像上面的普通请求只能得到渲染前的源代码。那么现在就需要我们给他一个浏览器渲染之后再去请求,爬取信息。

关键便是如何给它添加一个浏览器渲染。

在网上找了一下后发现,selenium+phantomjs便是一个很好的无头浏览器。这需要在python中安装下selenium

输入指令:pip install selenium  即可

然后在官方下载一个phantomjs就行。

 

 

这两个工具安装好后就可以直接使用,再去爬取该网页的源代码,在这里面便有了课程列表的信息。

posted on 2019-12-08 21:03  江武555  阅读(1104)  评论(0编辑  收藏  举报