1·scrapy實現多頁的爬取
多頁爬取的思路: 1,在start_urls中構建url的列表。逐一請求 2,定義一個page屬性,利用if判斷來實現多頁 3,獲取下一頁實現多頁,此種方式是比較靈活的。
2 深度爬取
1,深度爬取:從列表頁到詳情頁,甚至是更后續的頁面的數據的獲取 2,深度爬蟲: 通常我們要爬取的數據隱藏在form表單之后, 需要越過表單進行爬取
# 深度爬取 訪問列表頁, 從列表頁獲取詳情頁的連接 手動發起請求並制定回調 在回調中解析詳情頁的數據 將目標數據裝載在臨時容器item中提交給管道 # 請求傳參 1.請求如何傳參: 通過meta參數 meta是一個字典 meta = { 'title': title } 2.取出傳遞的參數 title = response.meta['title'] # 中括號里面的title要和meta字段的鍵對應
# https://www.guidaye.com/dp/
3.Item
1.item是一個類 2.item既然是一個類, 為什么能夠作為一個容器呢 3.item是如何攜帶着解析出來的目標數據到管道
1.item是一個類 面向對象: 面向過程: 創建一個小助手: 圖紙--> 模板---> 類 類 ---> 創建一個對象(實例化) 類有一些方法: __kdfkd__ --> 魔術方法(雙下划線方法) __init__(): 初始化方法, 幫你初始化一定信息 __new__(): 構造方法, 在內存中為你開辟一塊空間放置這個對象 __del__() __str__() __repr__()
import scrapy class GgsItem(scrapy.Item): # define the fields for your item here like: title = scrapy.Field() # 給item類定義一個屬性 content = scrapy.Field()
# 在爬蟲中實例化一個item對象發生了什么: 1.在內存中創建一個對象的空間:__new__() 2.運行初始化方法為屬性賦值或為屬性賦值做准備 3.item['title'] = title
