主要寫一些 操作流程+靜態/動態網頁的區別操作
關于scrapy新手上手的一些常用代碼,也是操作流程
創建scrapy專案:scrapy startproject 專案名
創建spider:scrapy genspider 爬蟲名
運行爬蟲:scrapy crawl 爬蟲名
分別寫下scrapy專案中主要檔案的寫法及作用:
item.py:
構造item物件的欄位的檔案,item可看成字典(以下為了便于理解我稱item為字典),其與字典非常相似,通過欄位名=scrapy.Field()創建欄位
spider.py:
在prase函式中寫爬蟲要執行的內容
這里動態頁面和靜態頁面有以下區別:
靜態頁面:
對于靜態頁面,右擊網頁查看源代碼時可直接看到自己想要爬取的資料,對于此類網頁,我主要選用xpath定位來獲取資料,xpath的獲取可以依靠Chrome的xpath helper獲得,再搭配for回圈獲取資料并存入到item字典中,此處要注意xpath獲得的內容(對于文字)一般都需要再呼叫.extract方法轉為utf-8編碼,且xpath回傳的內容永遠是串列,再添加到item中時記得加串列的下標
動態頁面:
查看網頁源代碼不能直接看到自己想要資料的頁面,也可以通過查看response.body.decode()判斷是動態頁面還是靜態頁面,對于動態頁面,不能通過xpath獲得資料,正確步驟如下:通過開發者工具,選擇network,篩選XHR,XHR下的檔案的url才是真正的提取資料用的url,打開這個url可以發現是json型別的檔案,然后再在spider.py中通過加載json檔案(反序列化),再通過一層層鍵和字典的過濾,選中并獲取所要元素添加到item字典中
全操作好后,通過yield item將item傳給引擎,引擎通過判斷是否為item型別資料,再將item傳給pipelines.py處理
pipelines.py:
用于處理引擎傳過來的item,這里的操作類似普通的將字典資料轉為json或csv等一些檔案的操作,不再贅述。
setting.py:
記得將pipelines的選項打開,robot的選項關閉,其他選項還未學到,不做記錄
想要將資料保存到那個檔案夾就進入那個檔案夾運行爬蟲,也可以在pipelines中的init函式中提前定義好
僅用于自己記錄學習用,免得忘的太快,也可能有錯,僅供參考
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/62333.html
