scrapy入門
阿新 • • 發佈:2018-12-13
的區別 t對象 lib 結束 手動 twisted trac art awl
什麽是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地址,不會被再次請求
scrapy入門