1. 程式人生 > >python 網絡爬蟲框架scrapy使用說明

python 網絡爬蟲框架scrapy使用說明

使用 字典列表 網絡 zite ems 函數 main () tor

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使用說明