python 網絡爬蟲框架scrapy使用說明
1 創建項目
scrapy startproject tutorial
2 定義Item
import scrapy
class DmozItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
desc = scrapy.Field()
paser完後的數據保存到item列表,在傳給pipeline使用
3 編寫第一個爬蟲(Spider), 保存在 tutorial/spiders 目錄下的 dmoz_spider.py, 爬蟲要根據文件名來啟動。
import scrapy
class DmozSpider(scrapy.Spider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
]
def parse(self, response):
item = DmozItem()
item[‘title‘] = sel.xpath(‘a/text()‘).extract()
item[‘link‘] = sel.xpath(‘a/@href‘).extract()
item[‘desc‘] = sel.xpath(‘text()‘).extract()
yield item
start_urls設置要爬的URL列表
parse成員函數在爬完一個頁面後調用從頁面裏提取信息,保存到之前定義的item字典列表裏。註意DmozItem為第二步定義的類
4 pipeline
當Item在Spider中被收集之後,它將會被傳遞到Item Pipeline,一些組件會按照一定的順序執行對Item的處理。在settings.py裏定義pipeline處理順序。
pipline處理數據,同時決定是否將數據傳入下一個pipeline
import json
class JsonWriterPipeline(object):
def __init__(self):
self.file = open(‘items.jl‘, ‘wb‘)
def process_item(self, item, spider):
line = json.dumps(dict(item)) + "\n"
self.file.write(line)
return item
5 啟動爬蟲
scrapy crawl dmoz
python 網絡爬蟲框架scrapy使用說明