python多线程框架_Python爬虫第七天:多线程爬虫|Scrapy框架
內(nèi)容簡述:
一:多線程爬蟲
二:Scrapy框架
一:多線程爬蟲原理
【示例見代碼】
二:Scrapy框架
定義:Scrapy是基于Python實現(xiàn),方便爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)的應(yīng)用框架。
底層:使用Twisted異步網(wǎng)絡(luò)框架來處理網(wǎng)絡(luò)通訊,加快下載速度。
不用手動實現(xiàn)異步框架,包含了多種中間件接口,非常靈活。
Scrapy運行架構(gòu)流程圖:
組件說明:
Scrapy Engine(引擎): 負責(zé)Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號、數(shù)據(jù)傳遞等。
Scheduler(調(diào)度器): 負責(zé)接收引擎發(fā)送過來的Request請求,并按照一定的方式進行整理排列,入隊,當(dāng)引擎需要時,交還給引擎。
Downloader(下載器):負責(zé)下載引擎發(fā)送的所有Requests請求,并將其獲取到的Responses交還給引擎,由引擎交給Spider來處理。
Spider(爬蟲):負責(zé)處理所有Responses,分析提取數(shù)據(jù),獲取Item字段需要的數(shù)據(jù),并將需要跟進的URL提交給引擎,再次進入調(diào)度器
Item Pipeline(管道):負責(zé)處理Spider中獲取到的Item,并進行后期處理(如詳細分析、過濾、存儲等).
Downloader Middlewares(下載中間件):類似一個可以自定義擴展下載功能的組件。
Spider Middlewares(Spider中間件):類似一個可以自定擴展和操作引擎和Spider中間通信的功能組件(比如進入Spider的Responses以及從Spider出去的Requests)
簡單使用:(安裝)pip3 install scrapy
(1)創(chuàng)建項目scrapy startproject spider1(項目名稱)
(2)目錄結(jié)構(gòu)
spider1
spider1
spiders????? ?????爬蟲目錄(寫代碼位置)
__init__.py
lala.py?????? 爬蟲文件
__init__.py
items.py????????? 定義數(shù)據(jù)結(jié)構(gòu)地方
middlewares.py??? 中間件
pipelines.py????? 管道文件
settings.py?????? 項目配置文件
scrapy.cfg
通過指令創(chuàng)建爬蟲文件
cd spider1/spider1
scrapy genspider qiubai"www.qiushibaike.com"
此時在spider1/spider1/spiders里面自動創(chuàng)建一個qiubai.py
name:爬蟲的名字,啟動的時候根據(jù)爬蟲的名字啟動項目
allowed_domains:允許的域名。意思是爬取的時候這個請求要不要發(fā)送,如果是該允許域名下的url,就會發(fā)送,否則過濾掉這個請求?!玖斜碓试S多個域名】
start_urls:爬蟲起始url,是一個列表,里面可以寫多個,一般只寫一個
def parse(self, response):寫代碼的入口,parse函數(shù)名是固定。當(dāng)收到下載數(shù)據(jù)時系統(tǒng)會自動調(diào)用
參數(shù)response,是一個響應(yīng)對象,可從中獲取html字符串,然后解析之。
【溫馨提示】這個parse函數(shù)必須返回一個可迭代對象
(3)定制items.py,個性化定義數(shù)據(jù)結(jié)構(gòu)格式。
(4)運行-打印response對象測試下
來到終端下:
cd spider1/ spider1/spiders
scrapy crawl qiubai
根據(jù)response獲取網(wǎng)頁內(nèi)容
response.text? 字符串類型??response.body二進制類型
(5)運行,直接通過命令導(dǎo)出json格式
scrapy crawl qiubai -o qiubai.json
scrapy crawl qiubai -o qiubai.xml
scrapy crawl qiubai -o qiubai.csv
【注】window 安裝問題參考
pip install Scrapy
building 'twisted.test.raiser' extension
error: Microsoft Visual C++ 14.0 is required.Get it with "Microsoft Visual C++? BuildTools": http://landinghub.visualstudio.com/visual-cpp-build-tools
解決方案:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
下載twisted對應(yīng)版本的whl文件(如我的Twisted-17.5.0-cp36-cp36m-win_amd64.whl),cp后面是python版本,amd64代表64位,運行命令:
pip install C:\Users\CR\Downloads\Twisted-17.5.0-cp36-cp36m-win_amd64.whl
pip install Scrapy
總結(jié)
以上是生活随笔為你收集整理的python多线程框架_Python爬虫第七天:多线程爬虫|Scrapy框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql数据库语句分类_细数MySQL
- 下一篇: 用python画桃花_python 画图