1. 如何建立scrapy工程?命令列中輸入
scrapy startproject projectname #projectname是自定義的工程名稱
2.spiders資料夾這部分處理怎麼爬取資料。通常有乙個或者多個spider,每個spider有下面四個基本的組成:
除此外會有其它的自定義變數或函式幫助助理,如count變數,用於統計爬取的頁面數量,parse_detail用於單獨處理資訊提取。
3.items.py的作用是什麼?items是乙個類字典型別的類,可以例項化,它用於收集提取的資料,暫時存放在items裡,後續可以放入資料庫,或匯出為csv,json檔案等。
4.第一步,items.py的類裡定義各個key的宣告,如:title = scrapy.field()items.py如何收集資料?
第二步,在spider檔案的類裡,例項化乙個items.py的類的物件,如:info = gppitem()
第三步,通過呼叫的方式,將提取的資料賦值給對應的key,如:info["title"] = vid.xpath('//*[@class=video]/a/@title').extract()#這裡不要忘了加上extract()這個提取操作,注意的一點是:提取出來的有可能是list格式資料,需要加上[0],通常保證xpah定位到的是唯一的資料
第四步,提取完畢後,加上yield info,保證持續的提取資料。
第五步,如果需要匯出成檔案,可以在執行命令後加上-o ***.csv這樣的引數。如:scrapy crawl test -o result.csv
5.如何爬取二級頁面?
yield scrapy.request(url=gurl,callback=self.parse_second)
在parse函式中呼叫上面的方法時,url引數選擇二級頁面的入口鏈結位址,callback函式不能為當前的parse函式,需要自定義乙個其它函式,在另乙個函式中爬取二級頁面的資料
6.如果一級頁面和二級頁面都需要獲取資料怎麼處理?parse函式中:
yield scrapy.request(url=gurl,meta=,callback=self.parse_second)
#加入meta引數可以把info物件作為值傳遞給key,放到callback的函式中作為引數
parse_second函式中:
info = response.meta['key']
info["durl"] = response.xpath('//*/source/@src').extract()[0]
#注意,這裡的response已經到二級頁面了,和parse裡的response不一樣了。
#這裡在callback函式parse_second裡呼叫這個key,並賦值給info,那麼parse中的info和parse_second中的info就同步了,-
#-然後再yield info就可以把一級和二級頁面的資料都儲存到一起了。
7.常見問題:問題1:items中key也定義了,也通過xpath/css去獲取資料了,但是顯示為空
這種通常是定位不准或定位失敗,可以通過chrome自帶的開發工具使用css和xpath定位,看是不是唯一的
問題2:可以獲取資料,但是有時候會失敗或超時
有時候網路狀況不佳,導致連線超時,可以在settings.py中設定連線超時,根據情況設定download_delay,一般設定為1就可以了。
問題3:提示資料不匹配
通常是獲取的資料是list,但是呼叫的時候把它當str呼叫了,會報錯。解決辦法是:在提取的資料後加上[0]就ok(前提是找到的資料是唯一的)
Python3 Scrapy 框架學習
1.安裝scrapy 框架 windows 開啟cmd輸入 pip install scrapy2.新建乙個專案 比如這裡我新建的專案名為first scrapy startproject first然後看一些目錄結構 首先在專案目錄下有乙個scrapy.cfg 檔案,這個檔案是關於整個專案的一些配...
Python3 Scrapy 安裝方法
寫了幾個爬蟲的雛形,想看看有沒有現成的,發現了scrapy,筆記本win10,想用新版本py3來裝scrapy,老是提示error microsoft visual c 14.0 is required.get it with microsoft visual c build tools 媽蛋vc ...
Python3 Scrapy 安裝方法
看了看相關介紹後選擇了scrapy框架,然後興高采烈的開啟了控制台,坑出現了。執行報錯 error unable to find vcvarsall.bat最後花費了將近一天的時間,終於找到了解決方法。使用wheel安裝。這個 裡邊是編譯好的各種庫的 同時,推薦一篇我的scrapy入門例項部落格 s...