最近因為**的資料需要推送,但實現的方式是通過開啟**鏈結 來 實現這種推送方式的,幾萬條資料需要推送,而每次推送只有幾百條資料。為什麼每次只能推送幾百條?因為資料量太多了,apache長時間執行乙個鏈結會報超時的錯誤。但機械性開啟鏈結著實麻煩,所有用 python 寫了乙個爬蟲來反覆開啟這個鏈結,直到全部資料推送完成。
先上**:因為初學python,所有在這個爬蟲的時間花費的比較多一些,實現邏輯也不難#! /usr/bin/env python
# coding=utf-8
import requests
import sys
import re
#初始化
reload(sys)
sys.setdefaultencoding('utf8')
#pattern = re.compile(ur'(msg)')
p1 = r"(插入成功)"#簡單粗暴的正規表示式
#函式宣告
#print is_str(xml_data,str) #返回true
#print xml_data.encode('gbk') #命令列顯示正常,無亂碼
pattern1 = re.compile(p1,re.m)#我們在編譯這段正規表示式
#matcher1 = re.search(pattern1,xml_data)#在源文字中搜尋符合正規表示式的部分
count = pattern1.findall(xml_data).__len__()
if count != 0:
print u"匹配總數:%s"%(count)
print 'no,i need keep on!'
print "***********************************="
opp_hot(url)
#print "no,i need keep on!"
else:
print u"匹配總數:%s"%(count)
print "ok,i maybe finished my work."
#f.close()
sys.exit(0)
#開始執行
btime = '1535644800'
etime = '1538323200'
url = ''+btime+'&etime='+etime
opp_hot(url)
1,獲取位址返回的資料,我這裡是動態網頁,所有使用requests.get(url)獲取網頁內容載入的時間比較長,等全部載入完後才會執行下一步。
2,用正規表示式匹配我需要的資料,因為動態網頁輸出的內容簡單,所有直接用中文進行匹配。這裡需要注意的是,進行中文匹配和編碼沒什麼關係,輸出或顯示亂碼才需要思考編碼問題。中文字串在前面加個字母u,標示unicode
3,函式自呼叫,如果一直有匹配到我想的資料,就繼續執行。
參考:
python 爬蟲中文亂碼
許多小夥伴在python爬蟲中遇到中文亂碼的問題。都以為是編碼錯誤,其實真正的原因 是檔案被壓縮了 直接上 加上紅色這段 就ok!import zlib import urllib2 import sys typeencode sys.getfilesystemencoding request ur...
python 爬蟲中文亂碼
import requests import chardet from lxml import etree from bs4 import beautifulsoup res requests.get 要爬取的網頁 chardet 自動檢測字元的編碼 res.encoding chardet.det...
python 爬蟲中文亂碼問題
在爬取 是遇到requests得到的respone為 先用import urllib import urllib.parse urllib.parse.unquote res.text 得到 然後我們直接把 replace一下 urllib.parse.unquote res.text replac...