Python3 scrapy學習小結

2021-08-09 07:07:58 字數 1984 閱讀 8640

1. 如何建立scrapy工程?
命令列中輸入

scrapy startproject projectname #projectname是自定義的工程名稱

2.spiders資料夾
這部分處理怎麼爬取資料。通常有乙個或者多個spider,每個spider有下面四個基本的組成:

除此外會有其它的自定義變數或函式幫助助理,如count變數,用於統計爬取的頁面數量,parse_detail用於單獨處理資訊提取。

3.items.py的作用是什麼?
items是乙個類字典型別的類,可以例項化,它用於收集提取的資料,暫時存放在items裡,後續可以放入資料庫,或匯出為csv,json檔案等。

4. 

items.py如何收集資料?

第一步,items.py的類裡定義各個key的宣告,如:title = scrapy.field()

第二步,在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...