介紹
本篇文章主要介紹如何爬取麥子學院的課程信息(本爬蟲仍是單線程爬蟲),在開始介紹之前,先來看看結果示意圖
怎么樣,是不是已經躍躍欲試了?首先讓我們打開麥子學院的網址,然后找到麥子學院的全部課程信息,像下面這樣
這個時候進行翻頁,觀看網址的變化,首先,第一頁的網址是 http://www.maiziedu.com/course/list/, 第二頁變成了 http://www.maiziedu.com/course/list/all-all/0-2/, 第三頁變成了 http://www.maiziedu.com/course/list/all-all/0-3/ ,可以看到,每次翻一頁,0后面的數字就會遞增1,然后就有人會想到了,拿第一頁呢?我們嘗試著將 http://www.maiziedu.com/course/list/all-all/0-1/ 放進瀏覽器的地址欄,發現可以打開第一欄,那就好辦了,我們只需要使用 re.sub() 就可以很輕松的獲取到任何一頁的內容。獲取到網址鏈接之后,下面要做的就是獲取網頁的源代碼,首先右擊查看審查或者是檢查元素,就可以看到以下界面
找到課程所在的位置以后,就可以很輕松的利用正則表達式將我們需要的內容提取出來,至于怎么提取,那就要靠你自己了,嘗試著自己去找規律才能有更大的收獲。如果你實在不知道怎么提取,那么繼續往下,看我的源代碼吧
實戰源代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# coding=utf-8 import re import requests import sys reload (sys) sys.setdefaultencoding( "utf8" ) class spider(): def __init__( self ): print "開始爬取內容。。。" def changePage( self , url, total_page): nowpage = int (re.search( '/0-(\d+)/' , url, re.S).group( 1 )) pagegroup = [] for i in range (nowpage, total_page + 1 ): link = re.sub( '/0-(\d+)/' , '/0-%s/' % i, url, re.S) pagegroup.append(link) return pagegroup def getsource( self , url): html = requests.get(url) return html.text def getclasses( self , source): classes = re.search( '<ul class="zy_course_list">(.*?)</ul>' , source, re.S).group( 1 ) return classes def geteach( self , classes): eachclasses = re.findall( '<li>(.*?)</li>' , classes, re.S) return eachclasses def getinfo( self , eachclass): info = {} info[ 'title' ] = re.search( '<a py" id="highlighter_90957">
第一行引入requests庫,第二行使用requests的get方法獲取網頁源代碼,第三行設置編碼格式,第四行文本輸出。
延伸 · 閱讀
精彩推薦
|