python爬蟲(chóng)使用scrapy注意事項(xiàng)
在學(xué)習(xí)中,如果遇到問(wèn)題把它們都收集整理出來(lái),長(zhǎng)期保存之后也是一份經(jīng)驗(yàn)之談。小編跟大家講了這么久的scrapy框架,在自己學(xué)習(xí)的整理和小伙伴們的交流反饋中也累積了不少心得。想著有些小伙伴在python學(xué)習(xí)的時(shí)候有點(diǎn)丟三落四的毛病,特意整理出來(lái)scrapy在python爬蟲(chóng)使用中需要注意的事項(xiàng),大家一起看看吧。
1.如果需要大批量分布式爬取,建議采用Redis數(shù)據(jù)庫(kù)存儲(chǔ),可安裝scrapy-redis,使用redis數(shù)據(jù)庫(kù)來(lái)替換scrapy原本使用的隊(duì)列結(jié)構(gòu)(deque),并配合其它數(shù)據(jù)庫(kù)存儲(chǔ),例如MySQL或者M(jìn)ongoDB,爬取效率將會(huì)極大提高。并且其自帶的dupefilter.py負(fù)責(zé)執(zhí)行requst的去重,使用redis的set數(shù)據(jù)結(jié)構(gòu),通過(guò)settings文件正確設(shè)置后,即便停止scrapy爬蟲(chóng),當(dāng)下次重新開(kāi)始后也能自動(dòng)去重。原因就是在redis已經(jīng)存儲(chǔ)了request的信息。
2.當(dāng)涉及到代理IP,Headers頭中間請(qǐng)求信息處理的時(shí)候,可以通過(guò)中間件Middleware來(lái)實(shí)現(xiàn)。Spider中間件是介入到Scrapy的spider處理機(jī)制的鉤子框架,可以添加代碼來(lái)處理發(fā)送給 Spiders的response及spider產(chǎn)生的item和request。
3.合理設(shè)置settings文件,需要熟練掌握settings的各種設(shè)置。
4.可以重新定義def start_requests(self)函數(shù)來(lái)加載cookie信息,form信息的提交用scrapy.FormRequest以及scrapy.FormRequest.from_response這兩個(gè)函數(shù),scrapy.FormRequest.from_response能實(shí)現(xiàn)自動(dòng)提交form數(shù)據(jù)。
5.采用Scrapy+phantomJS。 downloadMiddleware 對(duì)從 scheduler 送來(lái)的 Request 對(duì)象在請(qǐng)求之前進(jìn)行預(yù)處理,可以實(shí)現(xiàn)添加 headers, user_agent,還有 cookie 等功能 。但也可以通過(guò)中間件直接返回 HtmlResponse 對(duì)象,略過(guò)請(qǐng)求的模塊,直接扔給 response 的回調(diào)函數(shù)處理。
class CustomMetaMiddleware(object): def process_request(self,request,spider): dcap = dict(DesiredCapabilities.PHANTOMJS) dcap["phantomjs.page.settings.loadImages"] = False dcap["phantomjs.page.settings.resourceTimeout"] = 10 driver = webdriver.PhantomJS("D:xx\xx",desired_capabilities=dcap) driver.get(request.url) body = driver.page_source.encode('utf8') url = driver.current_url driver.quit() return HtmlResponse(request.url,body=body)
到此這篇關(guān)于python爬蟲(chóng)使用scrapy注意事項(xiàng)的文章就介紹到這了,更多相關(guān)scrapy在python爬蟲(chóng)使用中需要注意什么內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python爬蟲(chóng)中PhantomJS加載頁(yè)面的實(shí)例方法
- Selenium結(jié)合BeautifulSoup4編寫(xiě)簡(jiǎn)單的python爬蟲(chóng)
- 如何基于Python爬蟲(chóng)爬取美團(tuán)酒店信息
- Python抓包并解析json爬蟲(chóng)的完整實(shí)例代碼
- 零基礎(chǔ)寫(xiě)python爬蟲(chóng)之爬蟲(chóng)編寫(xiě)全記錄
- Python爬蟲(chóng)框架Scrapy安裝使用步驟
- python制作爬蟲(chóng)并將抓取結(jié)果保存到excel中
- 零基礎(chǔ)寫(xiě)python爬蟲(chóng)之HTTP異常處理
- 記一次python 爬蟲(chóng)爬取深圳租房信息的過(guò)程及遇到的問(wèn)題
相關(guān)文章
matplotlib實(shí)現(xiàn)顯示偽彩色圖像及色度條
今天小編就為大家分享一篇matplotlib實(shí)現(xiàn)顯示偽彩色圖像及色度條,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Python實(shí)現(xiàn)中文數(shù)字轉(zhuǎn)換為阿拉伯?dāng)?shù)字的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)中文數(shù)字轉(zhuǎn)換為阿拉伯?dāng)?shù)字的方法,涉及Python字符串遍歷、轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-05-05Pandas時(shí)間類(lèi)型轉(zhuǎn)換與處理的實(shí)現(xiàn)示例
本文主要介紹了Pandas時(shí)間類(lèi)型轉(zhuǎn)換與處理的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07python類(lèi)名和類(lèi)方法cls修改類(lèi)變量的值
這篇文章主要介紹了python類(lèi)名和類(lèi)方法cls修改類(lèi)變量的值,通過(guò)類(lèi)對(duì)象是無(wú)法修改類(lèi)變量的值的,本質(zhì)其實(shí)是給類(lèi)對(duì)象新添加?name?和?age?變量,下文更多的相關(guān)介紹需要的小伙伴可任意參考一下2022-04-04Python基于smtplib實(shí)現(xiàn)異步發(fā)送郵件服務(wù)
這篇文章主要介紹了Python基于smtplib實(shí)現(xiàn)異步發(fā)送郵件服務(wù),需要的朋友可以參考下2015-05-05Django model反向關(guān)聯(lián)名稱(chēng)的方法
今天小編就為大家分享一篇Django model反向關(guān)聯(lián)名稱(chēng)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12沒(méi)編程基礎(chǔ)可以學(xué)python嗎
在本篇文章里小編給大家整理的是關(guān)于沒(méi)編程基礎(chǔ)可以學(xué)python嗎的相關(guān)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。2020-06-06