您好,登錄后才能下訂單哦!
這篇文章主要介紹“python pyspider的使用方法”,在日常操作中,相信很多人在python pyspider的使用方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python pyspider的使用方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
概要:了解了爬蟲的基礎知識后,接下來我們來使用框架來寫爬蟲,用框架會使我們寫爬蟲更加簡單,接下來我們來了解一下,pyspider框架的使用,了解了該框架,媽媽再也不用擔心我們的學習了。
前期準備:
1、安裝pyspider:pip3 install pyspider
2、安裝Phantomjs:在官網下載解壓后,并將pathtomjs.exe拖進安裝python路徑下的Scripts下即可。
下載地址:https://phantomjs.org/dowmload.html
官方API地址:http://www.pyspider.cn/book/pyspider/self.crawl-16.html
2、用法(這里只簡要介紹,更多請看官方文檔):
1、首先啟動pyspider
在黑窗口中輸入pyspider all 即可看到如下。
提醒我們在http://localhost:5000端口打開即可。(注意不要關閉!)
打開后點擊右邊的Create創建項目,Project Name是項目名稱,
Start URL(s)是你要爬取的地址點擊Create就可以創建一個項目。
2、了解pyspider的格式和過程
創建之后我們會看到如下:
Handler方法是pysqider的主類,繼承BaseHandler,所有的功能,只需要一個Handler就可以解決。
crawl_config = {}表示全局的配置,比如可以之前學的那樣,定義一個headers
@every(minutes=24 * 60)every屬性表示爬取的時間間隔,minutes=24*60即是一天的意思,也就是說一天爬取一次。
on_start方法:是爬取的入口,通過調用crawl方法來發送請求,
callback=self.index_page:callback表示回調函數,也就是說將請求的結果交給index_page來處理。
@config(age=10 * 24 * 60 * 60)是設置任務的有效時間為10天,也就是說在10天內不會重復執行。
index_page函數:就是進行處理的函數,參數response,表示請求頁面的返回內容。
接下來的內容相必大家也看得懂,通過pyquery解析器(pyspider可以直接使用該解析器)獲取所有的鏈接。并依次去請求。然后調用detail_page來處理,得到我們想要的東西。
@config(priority=2)priority表示爬取的優先級,沒有設置默認為0,數字越大,可優先調用。
crawl的其他參數:
exetime:表示該任務一個小時候執行
self.crawl('http://maoyan.com/board/4', callback=self.detail_page,exetime=time.time()+60*60)
retries:可以設置重復次數,默認為3
auto_recrawl:設置為True時,當任務過期,即age的時間到了之后,再次執行。
method:即HTTP的請求方式默認為get
params:以字典的形式添加get的請求參數
self.crawl('http://maoyan.com/board/4', callback=self.detail_page,params={'a':'123','b':'456'})
data:post的表單數據,同樣是以字典的形式
files:上傳文件
self.crawl('http://maoyan.com/board/4', callback=self.detail_page,method='post',files={filename:'xxx'})
user_agent:即User-Agent
headers:即請求頭信息
cookies:字典形式
connect_timeout:初始化的最長等待時間,默認20秒
timeout:抓取頁面的最長等待時間
proxy:爬取時的代理,字典形式
fetch_type:設置成js即可看到javascript渲染的頁面,需要安裝Phantomjs
js_script:同樣,也可以執行自己寫的js腳本。如:
self.crawl('http://maoyan.com/board/4', callback=self.detail_page,js_script='''
function(){
alert('123')
}
''')
js_run_at:和上面運行js腳本一起使用,可以設置運行腳本的位置在開頭還是結尾
load_images:在加載javascript時,是否加載圖片,默認為否
save:在不同方法之間傳遞參數:
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、保存之后的項目是這樣的
status表示狀態:
TODO:表示項目剛剛被創建的狀態
STOP:表示停止
CHECKING:正在運行的項目被修改的狀態
DEBUG/RUNNING:都是運行,DEBUG可以說是測試版本。
PAUSE:出現多次錯誤。
如何刪除項目?
將group修改成delete,staus修改成STOP,24小時后系統自動刪除
actions:
run表示運行
active tasks 查看請求
results 查看結果
tate/burst:
1/3表示1秒發送一個請求,3個進程
progress:表示爬取的進度。
到此,關于“python pyspider的使用方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。