美好的一天又開始了,今天咱繼續爬取IT在線教育類網站,慕課網
,這個平臺的數據量並非不少,因此爬取起來仍是比較簡單的 python
打開咱們要爬取的頁面,尋找分頁點和查看是不是異步加載的數據。 jquery
進行了一些相應的分析,發現並無異步數據,只須要模擬翻頁就,在進行HTML的解析就能夠獲取數據了, 翻頁數據以下,合計32頁,在數據量上屬於很是小的了。mongodb
https://www.imooc.com/course/list?page=1
https://www.imooc.com/course/list?page=2
....
https://www.imooc.com/course/list?page=32
複製代碼
代碼分爲自動拼接URL,解析HTML,存儲到mongodb三個部分組成異步
page = 1
def main(page):
print(f"正在爬取{page}頁數據")
try:
with requests.Session() as s:
res = s.get("https://www.imooc.com/course/list?page={}".format(page))
d = pq(res.text)
get_content(d) # 詳細的函數內容在下面
except Exception as e:
print(e)
finally:
page+=1
main(page) # 頁碼+1,再次調用main函數
if __name__ == '__main__':
main(1)
複製代碼
上述代碼的功能主要用於翻頁,若是你想要獲取到詳細的數據,須要對網頁源碼進行解析。解析庫使用的是pyquery
一款跟jquery
使用方法差很少的python庫,固然相應的資料只要搜索一下,就會顯示很是多的入門教程。函數
def get_content(d):
courses = d.items(".course-card-container")
for course in courses:
title = course.find(".course-card-name").text() # 查找title
des = course.find(".course-card-desc").text()
level = course.find(".course-card-info>span:eq(0)").text()
users = course.find(".course-card-info>span:eq(1)").text()
labels = course.find(".course-label").text().split(" ")
url = urljoin("https://www.imooc.com/learn/", course.find("a").attr("href")) # url拼接
img_url = urljoin("https://img3.mukewang.com/", course.find("img").attr("src")) # url拼接
dict = {
"title":title,
"des":des,
"level":level,
"users":users,
"labels":labels,
"url":url,
"img_url":img_url
}
save_mongodb(dict) # 保存到mongodb
複製代碼
最後一步保存到mongodb是基本操做了,翻看一下之前的教程就能夠了,自行完成吧。網站
又一個在線教育平臺被咱們爬了... ...url