抓取網頁數據的思路有好多種,一般有:直接代碼請求http、模擬瀏覽器請求數據(通常需要登錄驗證)、控制瀏覽器實現數據抓取等。這篇不考慮復雜情況,放一個讀取簡單網頁數據的小例子:
目標數據
將ittf網站上這個頁面上所有這些選手的超鏈接保存下來。
數據請求
真的很喜歡符合人類思維的庫,比如requests,如果是要直接拿網頁文本,一句話搞定:
1
|
doc = requests.get(url).text |
解析html獲得數據
以beautifulsoup為例,包含獲取標簽、鏈接,以及根據html層次結構遍歷等方法。參考見這里。下面這個片段,從ittf網站上獲取指定頁面上指定位置的鏈接。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
url = 'http://www.ittf.com/ittf_ranking/WR_Table_3_A2.asp?Age_category_1=&Age_category_2=&Age_category_3=&Age_category_4=&Age_category_5=&Category=100W&Cont=&Country=&Gender=W&Month1=4&Year1=2015&s_Player_Name=&Formv_WR_Table_3_Page=' + str (page) doc = requests.get(url).text soup = BeautifulSoup(doc) atags = soup.find_all( 'a' ) rank_link_pre = 'http://www.ittf.com/ittf_ranking/' mlfile = open (linkfile, 'a' ) for atag in atags: #print atag if atag! = None and atag.get( 'href' ) ! = None : if "WR_Table_3_A2_Details.asp" in atag[ 'href' ]: link = rank_link_pre + atag[ 'href' ] links.append(link) mlfile.write(link + '\n' ) print 'fetch link: ' + link mlfile.close() |