Python的Scrapy框架基本使用詳解
一、Scrapy框架使用
1. 創(chuàng)建scrapy項(xiàng)目
(不能有漢字,不能數(shù)字開頭)
scrapy startproject Baidu
2. 創(chuàng)建爬蟲文件
cd Baidu scrapy genspider wenda www.baidu.com
注意: parse()是執(zhí)行了start_url之后要執(zhí)行的方法,方法中的response就是返回的對象。相當(dāng)于response = requests.get或requests.post
3. 運(yùn)行爬蟲代碼
scrapy crawl wenda
在parse()函數(shù)打印一句話,運(yùn)行后發(fā)現(xiàn)沒有打印結(jié)果,原因是被一個(gè)叫robots.txt的文件給阻止了。
解決:大平臺的君子協(xié)議,只需在settings里將ROBOTSTXT_OBEY = True注釋掉即可。
再次運(yùn)行
4. scrapy文檔
scrapy官網(wǎng):https://scrapy.org/
scrapy文檔:https://doc.scrapy.org/en/latest/intro/tutorial.html
scrapy日志:https://docs.scrapy.org/en/latest/news.html
二、scrapy項(xiàng)目的結(jié)構(gòu)
四、response的屬性和方法
- response.text 獲取響應(yīng)的字符串(源碼)
- response.body 獲取響應(yīng)的二進(jìn)制數(shù)據(jù)(二進(jìn)制源碼)
- response.xpath 直接通過xpath解析response中的內(nèi)容
- response.extract() 提取selector對象的data所有屬性值
- response.extract_first() 提取selector列表的第一個(gè)數(shù)據(jù)
- response.get() : 得到第一條數(shù)據(jù)
- response.getall() :取出所有的數(shù)據(jù),以列表的方式呈現(xiàn)
五、scrapy工作原理
- 引擎向spiders要url
- 引擎將要爬取的url給調(diào)度器
- 調(diào)度器會(huì)將url生成請求對象放入到指定的隊(duì)列中
- 從隊(duì)列中出隊(duì)一個(gè)請求
- 引擎將請求交給下載器處理
- 下載器發(fā)送請求獲取互聯(lián)網(wǎng)數(shù)據(jù)
- 下載器將數(shù)據(jù)返回給引擎
- 引擎將數(shù)據(jù)再次給spiders
- spiders通過xpath解析該數(shù)據(jù),得到數(shù)據(jù)或url
- spiders將數(shù)據(jù)或url給到引擎
- 引擎判斷是數(shù)據(jù)還是url,若是數(shù)據(jù),交給管道處理;若是url,交給調(diào)度器處理
到此這篇關(guān)于Python的Scrapy框架基本使用詳解的文章就介紹到這了,更多相關(guān)Python的Scrapy框架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章

uwsgi啟動(dòng)django項(xiàng)目的實(shí)現(xiàn)步驟

Python實(shí)現(xiàn)快速多線程ping的方法

Python實(shí)現(xiàn)可視化CSV文件中的數(shù)據(jù)

Python使用PIL將圖片或GIF轉(zhuǎn)為字符畫的方法詳解

python 如何使用find和find_all爬蟲、找文本的實(shí)現(xiàn)

python?pandas?數(shù)據(jù)排序的幾種常用方法