什麼是scrapy?
scrapy是一個為了爬去網站資料,提取結構性資料而編寫的應用框架,我們只需要實現少量的程式碼,就能夠快速的抓取
scrapy使用了 Twisted 非同步網路框架,可以加快我們的下載速度
非同步和非阻塞的區別
非同步:呼叫在釋出之後,這個呼叫就直接返回,不管有無結果
非阻塞:關注的是程式在等待呼叫結果(訊息,返回值)時的狀態,指在不能立刻得到結果之前,該呼叫不會阻塞當前執行緒
安裝scrapy
直接安裝可能會報錯
- 第一步 下載Twisted
- 點選 https://www.lfd.uci.edu/~gohlke/pythonlibs/
- 搜尋 Twisted 選擇與你的python版本相對應的版本
- 檢視python版本命令 python -V或著python -version
- 第二步 安裝Twisted
- 進入到剛剛下載的Twisted所在的目錄,執行 pip install Twisted‑18.9.0‑cp36‑cp36m‑win_amd64.whl(剛剛下載的檔案)
- 第三部 安裝scrapy
- pip install scrapy
scrapy專案流程
- 建立專案
- scrapy startproject 專案名
- 如:scrapy startproject Myspider
- 建立爬蟲
- cd 專案名
- 如:cd Myspider
- scrapy genspider <爬蟲名字> <限制訪問的網站(allowed_domains)>
- 如:scrapy genspider itcast itcast.cn
- 啟動爬蟲
- scrapy crawl 爬蟲名
- 如:scrapy crawl itcast
- 完善spider
- 完善管道
完善spider
- parse方法必須有,用來處理start_urls對應的響應
- extract() response.xpath()從中提取資料的方法,沒有就返回一個空列表
資料提取url地址補全
- 1.手動字串相加
- 2.urllib.parse.urljoin(baseurl.url)
- 後面的url會根據baseurl進行url地址的拼接
- 3.response.follow(url, callback)
- 能夠根據response的地址把url拼接完整,構造成request物件
scrapy構造請求
- scrapy.Request(url, callback, meta, dont_filter=False)
- callback:url地址的響應的處理函式
- meta:實現在不同的解析函式中傳遞資料
- dont_filter:預設是Faslse表示過濾,scrapy請求過的url地址,在當前的執行程式中
—恢復內容結束—
### 什麼是scrapy?
scrapy是一個為了爬去網站資料,提取結構性資料而編寫的應用框架,我們只需要實現少量的程式碼,就能夠快速的抓取
scrapy使用了 Twisted 非同步網路框架,可以加快我們的下載速度
非同步和非阻塞的區別
非同步:呼叫在釋出之後,這個呼叫就直接返回,不管有無結果
非阻塞:關注的是程式在等待呼叫結果(訊息,返回值)時的狀態,指在不能立刻得到結果之前,該呼叫不會阻塞當前執行緒
安裝scrapy
直接安裝可能會報錯
- 第一步 下載Twisted
- 點選 https://www.lfd.uci.edu/~gohlke/pythonlibs/
- 搜尋 Twisted 選擇與你的python版本相對應的版本
- 檢視python版本命令 python -V或著python -version
- 第二步 安裝Twisted
- 進入到剛剛下載的Twisted所在的目錄,執行 pip install Twisted‑18.9.0‑cp36‑cp36m‑win_amd64.whl(剛剛下載的檔案)
- 第三部 安裝scrapy
- pip install scrapy
scrapy專案流程
- 建立專案
- scrapy startproject 專案名
- 如:scrapy startproject Myspider
- 建立爬蟲
- cd 專案名
- 如:cd Myspider
- scrapy genspider <爬蟲名字> <限制訪問的網站(allowed_domains)>
- 如:scrapy genspider itcast itcast.cn
- 啟動爬蟲
- scrapy crawl 爬蟲名
- 如:scrapy crawl itcast
- 完善spider
- 完善管道
完善spider
- parse方法必須有,用來處理start_urls對應的響應
- extract() response.xpath()從中提取資料的方法,沒有就返回一個空列表
資料提取url地址補全
- 1.手動字串相加
- 2.urllib.parse.urljoin(baseurl.url)
- 後面的url會根據baseurl進行url地址的拼接
- 3.response.follow(url, callback)
- 能夠根據response的地址把url拼接完整,構造成request物件
scrapy構造請求
- scrapy.Request(url, callback, meta, dont_filter=False)
- callback:url地址的響應的處理函式
- meta:實現在不同的解析函式中傳遞資料
- dont_filter:預設是Faslse表示過濾,表示請求過的url地址,不會被再次請求