在item的filed()中設定引數函式,可以用來預處理item欄位的資料,另一方面也方便程式**的管理和重用
item中
from scrapy.loader.processors import mapcompose, takefirst
import scrapy
from scrapy.loader import itemloader
def add(value):
# 在myitem中呼叫的函式,對輸入的資料進行指定的處理後返回值
return value + 'hello-world'
def fun(value):
return value + do_something
class myitemloader(itemloader):
# 自定義itemloader類,繼承自itemloader,實現預設提取第乙個值,用來自動實現output_process=takefirst()
default_output_processor = takefirst()
class myitem(scrapy.item):
'''# input_process=mapcompose(add)可以使用外接函式add對傳入的item欄位進行預處理
# mapcompose()裡的引數可以是任意函式,例子中add是外接函式,也可以是lambda匿名函式
# output_process=takefirst()
# takefirst()只提取第乙個值
當自定義了itemloader,即myitemloader類後,output_process就可以省略了
'''item = scrapy.field(
input_process=mapcompose(add),
#output_process=takefirst()
)spider中
from scrapy.loader import itemloader
from spider_path.items import myitem
from ... import myitemloader # 匯入自定義的itermloader
# 通過itemloader載入myitem中的字段, 這裡itemloader被重寫成了myitermloader
item_loader= myitemloasder(item=myitem(), response=response)
# 通過css,xpath,value提取
item_loader.add_css('myitem中的字段','css選擇器提取路徑')
item_loader.add_xpath('myitem中的字段','xpath選擇器提取路徑')
item_loader.add_value('myitem中的字段',獲取的值)
my_item = item_loader.load_item()
yield my_item
爬蟲 Jupyter Notebook使用
jupyter notebook是基於網頁的用於互動計算的應用程式。其可被應用於全過程計算 開發 文件編寫 執行 和展示結果。jupyter notebook官方介紹 簡而言之,jupyter notebook是以網頁的形式開啟,可以在網頁頁面中直接編寫 和執行 的執行結果也會直接在 塊下顯示。如在...
python爬蟲免登入 爬蟲使用cookie免登陸
由於前程無憂上崗位投遞記錄只保留兩個月,想記錄下。程式 放在github 對於怎麼獲取登陸後的頁面,有兩種思路使用賬號,密碼登陸,如果該 登陸系統簡單的話,沒有驗證碼啥的,有驗證碼的話,可以使用圖形識別庫 使用cookie繞過登陸頁面cookie cookie 複數形態cookies 中文名稱為 小...
C 使用HtmlAgilityPack爬蟲例項
使用htmlagilitypack類庫解析html非常方便,網上的資料有很多,可以自行搜尋了解 下面上乙個非常簡單的小例子 要爬取的資訊如下 首先要引用htmlagilitypack.dll檔案 上 internal void run httptool類 初始化請求 請求頭資訊可以按自己需求增加 p...