(一)scrapy 與 requsts與beautifulsoup的區(qū)別是什么呢?
個人粗暴的認(rèn)為:
1、scrapy最牛X,大框架,大工程,往里可以添加好多庫,內(nèi)置css和xpath selector,非常方便。
2、requests呢,爬取個妹子圖啊,個性化定制的東西比較簡潔。用xpath解析還得fromlxmlimporthtml。
3、bs4呢,純python寫的,有點(diǎn)慢。而且有點(diǎn)過時。(有可能是我還沒用明白)
總結(jié):
reqests,beautifulsoup都是庫,Scrapy是框架
Scrapy中可以加入requests beautifulsoup
Scrapy基于twisted,異步的,一條線卡死了,另一條線繼續(xù)運(yùn)行。
(二)pipelines、settings、iterms都是干嘛用的?CSS和Xpath的區(qū)別是什么?
Item:保存爬取到的數(shù)據(jù)的容器;其使用方法和python字典類似, 并且提供了額外保護(hù)機(jī)制來避免拼寫錯誤導(dǎo)致的未定義字段錯誤。
spiders:爬蟲模塊,負(fù)責(zé)配置需要爬取的數(shù)據(jù)和爬取規(guī)則,以及解析結(jié)構(gòu)化數(shù)據(jù)
pipelines:管道模塊,處理spider模塊分析好的結(jié)構(gòu)化數(shù)據(jù),如保存入庫等
Selectors選擇器:
Scrapy提取數(shù)據(jù)有自己的一套機(jī)制。它們被稱作選擇器(seletors),因?yàn)樗麄兺ㄟ^特定的 XPath 或者 CSS 表達(dá)式來“選擇” HTML文件中的某個部分。
Xpath爬取屬于樹狀結(jié)構(gòu),一層一層從上向下?lián)荛_。
Css只要抓住關(guān)鍵字,再先頂一下標(biāo)簽就可以提取出來。個人比較喜歡css提取方式,簡單輕松直觀。
(三)搭建scrapy的入口 start your url
首先在虛擬環(huán)境下進(jìn)入你的文件夾,我的項(xiàng)目的名字是mm(這部是關(guān)鍵,一定不能忘記,不然不會成功)
cd mm
然后,虛擬環(huán)境下終端輸入:
scrapy genspider jobbole blog.jobbole.com
(四)寫一個自己的main.py文件,然后調(diào)用命令行
首先,終端虛擬環(huán)境下輸入:
scrapy crawl jobbole
啟動jobbole
然后,main.py編寫代碼
fromscrapy.cmdlineimportexecute
importsys
importos
sys.path.append(os.path.dirname(os.path.abspath(__file__)))# 自動的導(dǎo)入mm的路徑,不會換臺電腦就廢了
execute(["scrapy","crawl","douban"])# 調(diào)用excute函數(shù),傳遞數(shù)組進(jìn)來
(五)調(diào)試程序之前,setting一定要配置一下。
不然robot協(xié)議會出現(xiàn)問題,srapy會默認(rèn)讀取每個網(wǎng)站的robot協(xié)議,爬蟲會很快停掉的

(六)打斷點(diǎn),調(diào)試一下,看看是否導(dǎo)入成功

response=HtmlResponse 是200, 代表服務(wù)器返回正常。ok可以繼續(xù)開展爬取工作了
接下來就該獲取url的值,并保存在字段中了。