標籤:http 使用 os 檔案 資料 width
在實際工作中,資料的來源不能局限於自家的資料庫或者成型的後台,在做某些市場分析或是競爭者開服節奏分析的情況下,對競爭者資料的獲得顯得更為至關重要,本文就以擷取某大平台開服資料作為一個案例,簡要的介紹另一種擷取資料的方法,網路爬蟲技術。
何為網路爬蟲,爬蟲是一個自動提取網頁的程式,為搜尋引擎在全球資訊網上下載網頁,是搜尋引擎的重要組成部分。簡單的講就是從一個或若干個初始頁面的URL開始,獲得初始頁面上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的某些停止條件。
本文利用爬蟲收集各大平台開服資料列表上的相關資料,減去了在收集開服資料的繁瑣,以下就是一個簡單爬蟲及正則的例子,從某知名頁遊平台上抓取開服資料。爬起中文資料常有的問題就是不規格的編碼模式,這需要在程式的編寫過程中注意編碼轉換。
在此之前簡要的講一下擷取資料的另一個重要內容,Regex。Regex就是由一般字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。該模式描述在尋找文字主體時待匹配的一個或多個字串。Regex作為一個模板,將某個字元模式與所搜尋的字串進行匹配。Regex元字元及文法可以在http://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx詳細查閱。
使用python編寫爬蟲程式,匯入相應的模組urllib2,使用urlopen下載網頁,在網頁中使用正則獲得想要獲得相應的資料。
簡要的介紹urllib2模組中用到的方法,
urllib.urlopen(url[, data[, proxies]]) :
url: 表示遠端資料的路徑
data: 以post方式提交到url的資料
proxies:用於設定代理
urlopen返回對象提供方法:
read() , readline() ,readlines() , fileno() , close() :這些方法的使用方式與檔案對象完全一樣
info():返回一個httplib.HTTPMessage對象,表示遠程伺服器返回的頭資訊
getcode():返回Http狀態代碼。如果是http請求,200請求成功完成;404網址未找到
geturl():返回請求的url
import urllib2
import re
msg=urllib2.urlopen(‘http://www.****.com/‘).read()
res=re.findall(‘tr>[\s\S]*?target=\"_blank\" class=\"cred\">(.*?)(.*?)[\s\S]*?
‘,msg)
for res1 in res:
for res2 in res1
print res2.decode(‘utf-8‘)
用MySQL儲存資料,先要在自己的資料庫裡建立一個空表,這裡我建立了一個名為KFdata的資料庫,表名為data_one,相應的在python中匯入相應的MySQL模組,並與相應資料庫連接,將資料寫入資料庫。
import MySQLdb
db=MySQLdb.connect(host="localhost",user="root",password="123456",db="KFdata",use_unicode=1,charset=‘utf-8‘)
cursor=db.cursor()
for i in range(20):
cursor.execute("insert into data_one values(%s,%s,%s,%s,%s,%s,%s,%s)",(id[i],‘h‘,index[i],time1[i],size[i],hit[i],lz[i],title1[i]))
轉載請註明來源:http://www.gamedatas.com
原文地址:http://www.gamedatas.com/archives/73