這篇文章主要介紹“python pyspider的使用方法”,在日常操作中,相信很多人在python pyspider的使用方法問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”python pyspider的使用方法”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)公司客戶idc服務(wù)中心,提供成都西信服務(wù)器托管、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開放、透明、穩(wěn)定、高性價(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級(jí)技術(shù)保障。
概要:了解了爬蟲的基礎(chǔ)知識(shí)后,接下來我們來使用框架來寫爬蟲,用框架會(huì)使我們寫爬蟲更加簡(jiǎn)單,接下來我們來了解一下,pyspider框架的使用,了解了該框架,媽媽再也不用擔(dān)心我們的學(xué)習(xí)了。
前期準(zhǔn)備:
1、安裝pyspider:pip3 install pyspider
2、安裝Phantomjs:在官網(wǎng)下載解壓后,并將pathtomjs.exe拖進(jìn)安裝python路徑下的Scripts下即可。
下載地址:https://phantomjs.org/dowmload.html
官方API地址:http://www.pyspider.cn/book/pyspider/self.crawl-16.html
2、用法(這里只簡(jiǎn)要介紹,更多請(qǐng)看官方文檔):
1、首先啟動(dòng)pyspider
在黑窗口中輸入pyspider all 即可看到如下。
提醒我們?cè)趆ttp://localhost:5000端口打開即可。(注意不要關(guān)閉!)
打開后點(diǎn)擊右邊的Create創(chuàng)建項(xiàng)目,Project Name是項(xiàng)目名稱,
Start URL(s)是你要爬取的地址點(diǎn)擊Create就可以創(chuàng)建一個(gè)項(xiàng)目。
2、了解pyspider的格式和過程
創(chuàng)建之后我們會(huì)看到如下:
Handler方法是pysqider的主類,繼承BaseHandler,所有的功能,只需要一個(gè)Handler就可以解決。
crawl_config = {}表示全局的配置,比如可以之前學(xué)的那樣,定義一個(gè)headers
@every(minutes=24 * 60)every屬性表示爬取的時(shí)間間隔,minutes=24*60即是一天的意思,也就是說一天爬取一次。
on_start方法:是爬取的入口,通過調(diào)用crawl方法來發(fā)送請(qǐng)求,
callback=self.index_page:callback表示回調(diào)函數(shù),也就是說將請(qǐng)求的結(jié)果交給index_page來處理。
@config(age=10 * 24 * 60 * 60)是設(shè)置任務(wù)的有效時(shí)間為10天,也就是說在10天內(nèi)不會(huì)重復(fù)執(zhí)行。
index_page函數(shù):就是進(jìn)行處理的函數(shù),參數(shù)response,表示請(qǐng)求頁面的返回內(nèi)容。
接下來的內(nèi)容相必大家也看得懂,通過pyquery解析器(pyspider可以直接使用該解析器)獲取所有的鏈接。并依次去請(qǐng)求。然后調(diào)用detail_page來處理,得到我們想要的東西。
@config(priority=2)priority表示爬取的優(yōu)先級(jí),沒有設(shè)置默認(rèn)為0,數(shù)字越大,可優(yōu)先調(diào)用。
crawl的其他參數(shù):
exetime:表示該任務(wù)一個(gè)小時(shí)候執(zhí)行
self.crawl('http://maoyan.com/board/4', callback=self.detail_page,exetime=time.time()+60*60)
retries:可以設(shè)置重復(fù)次數(shù),默認(rèn)為3
auto_recrawl:設(shè)置為True時(shí),當(dāng)任務(wù)過期,即age的時(shí)間到了之后,再次執(zhí)行。
method:即HTTP的請(qǐng)求方式默認(rèn)為get
params:以字典的形式添加get的請(qǐng)求參數(shù)
self.crawl('http://maoyan.com/board/4', callback=self.detail_page,params={'a':'123','b':'456'})
data:post的表單數(shù)據(jù),同樣是以字典的形式
files:上傳文件
self.crawl('http://maoyan.com/board/4', callback=self.detail_page,method='post',files={filename:'xxx'})
user_agent:即User-Agent
headers:即請(qǐng)求頭信息
cookies:字典形式
connect_timeout:初始化的最長(zhǎng)等待時(shí)間,默認(rèn)20秒
timeout:抓取頁面的最長(zhǎng)等待時(shí)間
proxy:爬取時(shí)的代理,字典形式
fetch_type:設(shè)置成js即可看到j(luò)avascript渲染的頁面,需要安裝Phantomjs
js_script:同樣,也可以執(zhí)行自己寫的js腳本。如:
self.crawl('http://maoyan.com/board/4', callback=self.detail_page,js_script='''
function(){
alert('123')
}
''')
js_run_at:和上面運(yùn)行js腳本一起使用,可以設(shè)置運(yùn)行腳本的位置在開頭還是結(jié)尾
load_images:在加載javascript時(shí),是否加載圖片,默認(rèn)為否
save:在不同方法之間傳遞參數(shù):
def on_start(self):
self.crawl('http://maoyan.com/board/4', callback=self.index_page,save={'a':'1'})
def index_page(self,response):
return response.save['a']
3、保存之后的項(xiàng)目是這樣的
status表示狀態(tài):
TODO:表示項(xiàng)目剛剛被創(chuàng)建的狀態(tài)
STOP:表示停止
CHECKING:正在運(yùn)行的項(xiàng)目被修改的狀態(tài)
DEBUG/RUNNING:都是運(yùn)行,DEBUG可以說是測(cè)試版本。
PAUSE:出現(xiàn)多次錯(cuò)誤。
如何刪除項(xiàng)目?
將group修改成delete,staus修改成STOP,24小時(shí)后系統(tǒng)自動(dòng)刪除
actions:
run表示運(yùn)行
active tasks 查看請(qǐng)求
results 查看結(jié)果
tate/burst:
1/3表示1秒發(fā)送一個(gè)請(qǐng)求,3個(gè)進(jìn)程
progress:表示爬取的進(jìn)度。
到此,關(guān)于“python pyspider的使用方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!