中國大學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就行。

這兩個工具安裝好后就可以直接使用,再去爬取該網頁的源代碼,在這里面便有了課程列表的信息。
