您好,登錄后才能下訂單哦!
Python爬蟲(chóng)——Scrapy,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
Scrapy Engine(引擎):Scrapy框架的核心部分。負(fù)責(zé)在Spider和ItemPipeline、Downloader、Scheduler中間通信、傳遞數(shù)據(jù)等。
Spider(爬蟲(chóng)):發(fā)送需要爬取的鏈接給引擎,最后引擎把其他模塊請(qǐng)求回來(lái)的數(shù)據(jù)再發(fā)送給爬蟲(chóng),爬蟲(chóng)就去解析想要的數(shù)據(jù)。這個(gè)部分是我們開(kāi)發(fā)者自己寫(xiě)的,因?yàn)橐廊∧男╂溄樱?yè)面中的哪些數(shù)據(jù)是我們需要的,都是由程序員自己決定。
Scheduler(調(diào)度器):負(fù)責(zé)接收引擎發(fā)送過(guò)來(lái)的請(qǐng)求,并按照一定的方式進(jìn)行排列和整理,負(fù)責(zé)調(diào)度請(qǐng)求的順序等。
Downloader(下載器):負(fù)責(zé)接收引擎?zhèn)鬟^(guò)來(lái)的下載請(qǐng)求,然后去網(wǎng)絡(luò)上下載對(duì)應(yīng)的數(shù)據(jù)再交還給引擎。
Item Pipeline(管道):負(fù)責(zé)將Spider(爬蟲(chóng))傳遞過(guò)來(lái)的數(shù)據(jù)進(jìn)行保存。具體保存在哪里,應(yīng)該看開(kāi)發(fā)者自己的需求。
Downloader Middlewares(下載中間件):可以擴(kuò)展下載器和引擎之間通信功能的中間件。
Spider Middlewares(Spider中間件):可以擴(kuò)展引擎和爬蟲(chóng)之間通信功能的中間件。
####macOS 環(huán)境
需要安裝c語(yǔ)言的編譯環(huán)境
xcode-select --install
安裝Scrapy
pip3 install Scrapy
scrapy startproject xxx(項(xiàng)目名稱(chēng))
scrapy startproject firstProjectNew Scrapy project 'firstProject', using template directory '/usr/local/lib/python3.6/site-packages/scrapy/templates/project', created in: /Users/baxiang/Documents/Python/Scrapy/firstProjectYou can start your first spider with: cd firstProject scrapy genspider example example.com
.├── firstProject│ ├── __init__.py│ ├── __pycache__│ ├── items.py│ ├── middlewares.py│ ├── pipelines.py│ ├── settings.py│ └── spiders│ ├── __init__.py│ └── __pycache__└── scrapy.cfg
items.py:用來(lái)存放爬蟲(chóng)爬取下來(lái)數(shù)據(jù)的模型。
middlewares.py:用來(lái)存放各種中間件的文件。
pipelines.py:用來(lái)將items的模型存儲(chǔ)到本地磁盤(pán)中。
settings.py:爬蟲(chóng)的一些配置信息(比如請(qǐng)求頭、多久發(fā)送一次請(qǐng)求、ip代理池等)。
scrapy.cfg:項(xiàng)目的配置文件
spiders包:所有的爬蟲(chóng)代碼都存放到這個(gè)里面
####Items.py
定義需要抓取并需要后期處理的數(shù)據(jù)
####settings.py
文件設(shè)置scapy,其中兩個(gè)地方是建議設(shè)置的。
ROBOTSTXT_OBEY設(shè)置為False。默認(rèn)是True。即遵守機(jī)器協(xié)議,那么在爬蟲(chóng)的時(shí)候,scrapy首先去找robots.txt文件,如果沒(méi)有找到。則直接停止爬取。
DEFAULT_REQUEST_HEADERS添加User-Agent。這個(gè)也是告訴服務(wù)器,我這個(gè)請(qǐng)求是一個(gè)正常的請(qǐng)求,不是一個(gè)爬蟲(chóng)。
用于存放后期數(shù)據(jù)處理的功能。
創(chuàng)建news.py文件內(nèi)容
name:這個(gè)爬蟲(chóng)的名字,名字必須是唯一的。
allow_domains:允許的域名。爬蟲(chóng)只會(huì)爬取這個(gè)域名下的網(wǎng)頁(yè),其他不是這個(gè)域名下的網(wǎng)頁(yè)會(huì)被自動(dòng)忽略。
start_urls:爬蟲(chóng)從這個(gè)變量中的url開(kāi)始,第一次下載的數(shù)據(jù)將會(huì)從這些urls開(kāi)始。
parse:引擎會(huì)把下載器下載回來(lái)的數(shù)據(jù)扔給爬蟲(chóng)解析,爬蟲(chóng)再把數(shù)據(jù)傳給這個(gè)parse方法。這個(gè)是個(gè)固定的寫(xiě)法。這個(gè)方法的作用有兩個(gè),第一個(gè)是提取想要的數(shù)據(jù)。第二個(gè)是生成下一個(gè)請(qǐng)求的url。
看完上述內(nèi)容,你們掌握Python爬蟲(chóng)——Scrapy的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。