介紹
本篇文章主要介紹如何爬取麥子學(xué)院的課程信息(本爬蟲仍是單線程爬蟲),在開始介紹之前,先來看看結(jié)果示意圖
怎么樣,是不是已經(jīng)躍躍欲試了?首先讓我們打開麥子學(xué)院的網(wǎng)址,然后找到麥子學(xué)院的全部課程信息,像下面這樣
這個(gè)時(shí)候進(jìn)行翻頁,觀看網(wǎng)址的變化,首先,第一頁的網(wǎng)址是 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后面的數(shù)字就會(huì)遞增1,然后就有人會(huì)想到了,拿第一頁呢?我們嘗試著將 http://www.maiziedu.com/course/list/all-all/0-1/ 放進(jìn)瀏覽器的地址欄,發(fā)現(xiàn)可以打開第一欄,那就好辦了,我們只需要使用 re.sub() 就可以很輕松的獲取到任何一頁的內(nèi)容。獲取到網(wǎng)址鏈接之后,下面要做的就是獲取網(wǎng)頁的源代碼,首先右擊查看審查或者是檢查元素,就可以看到以下界面
找到課程所在的位置以后,就可以很輕松的利用正則表達(dá)式將我們需要的內(nèi)容提取出來,至于怎么提取,那就要靠你自己了,嘗試著自己去找規(guī)律才能有更大的收獲。如果你實(shí)在不知道怎么提取,那么繼續(xù)往下,看我的源代碼吧
實(shí)戰(zhàn)源代碼
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 "開始爬取內(nèi)容。。。" 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庫(kù),第二行使用requests的get方法獲取網(wǎng)頁源代碼,第三行設(shè)置編碼格式,第四行文本輸出。
延伸 · 閱讀
精彩推薦
|