最近測試過程中需要造一些資料,又要實時更新。所以寫了乙個python小爬一下資料。爬蟲網上很多,初略學習了一下,有點小心得,做個筆記記一下。剛開始的時候跟朋友導論了一下爬下來的資料怎麼樣處理,導論下來的實踐方式大概有兩種:1、把資料讀取下來後直接存入資料庫,不需要消耗服務端的資源,2、伺服器加乙個介面在每次爬到資料後,就往資料庫裡存。第二種方法雖然消耗了伺服器資源,但是這樣可以減少運算元據庫的風險,而且可以在半夜的時候再執行,這樣可以大大的提高cpu的使用。
雖然不再直接往資料庫中儲存了,但是覺得還是可以記下來。
開啟一般的**可以使用:urllib2中的urlopen(url);這樣就會getrequest **原始碼了,但是很多**都要有個headers;所以還需要在開啟前加個乙個頭部,這樣整體的**請求就出來了:
url =
user_agent = 'mozilla/4.0 (compatible; msie 5.5; windows nt)'
headers =
request = urllib2.request(url,headers = headers)
response = urllib2.urlopen(request)
所以一般要做這樣的處理:response= response.read().decode('utf-8')
respone獲取到資料後,下來就是篩選了,那就是使用python正則,如:pattern = re.compile('(.*?)
',re.s)
引號中的為匹配的內容,這裡要注意::一定要兩個()或是兩個以上,不知道什麼原因,不然後面使用到組數時一直報越界。
然後使用findall匹配原始碼。getneed=re.findall(pattern,response);再使用for迴圈就可以把獲取到的內容print或存起來了。
如存入i[]中:
for i in getneed:
print i[0],i[1]
i[0]表示每次匹配到的第乙個()中的內容,每次匹配到存起來就可以了;(i[1]同理)
(2)將存到資料庫中。
import mysql.connector as dbu 注意import的是mysql包中的connector。
conn=dbu.connect(host="localhost", user="root", passwd="",db='test')
cmd=conn.cursor()
cmd.execute(cmdbk)
把(1)中獲取的資料新增到cmdbdk中就好了。
(3)調介面,通過介面來將資料存入資料庫;
直接記下**需要注意的東西吧。
data = 傳送資料的格式
data_urlencode = urllib.urlencode(data)
requrl = "http:///putdata" 介面位址
req = urllib2.request(url = requrl,data =data_urlencode)
print req 請求後返回內容
res_data = urllib2.urlopen(req)
res = res_data.read()
print res響應
很晚了,睡覺啦,小記一下~~
Linux 下解決定時啟動Python指令碼
sudo vim etc crontab 在檔案末尾新增以下命令 root usr bin python3 home ubuntu code cut words ttt.py home ubuntu code cut words ttt.log以上 的意思是每分鐘執行一次指令碼並列印日誌。cront...
python 執行定時指令碼
from apscheduler.schedulers.background import backgroundscheduler import os import time import datetime def task list info return 你的指令碼儲存位置 os.system ...
定時啟動jmeter指令碼進行壓測
最近有個需求,要求在23 57打一批委託單,考慮到人工執行jmx指令碼不方便,於是就想有沒有什麼指令碼可以定時自動執行jmx指令碼。最後在網上找到一篇介紹windows系統使用定時任務啟動jmx指令碼的方法,在這裡記錄一下,方便以後使用。1 首先就是編輯jmx指令碼以後儲存好,jmx指令碼可以使用命...