今天給大家寫了一個Scrapy入門教程,幫助大家安裝Scrapy和創(chuàng)建新項目。
1、
首先需要安裝如下軟件
Python 2.7
lxml
OpenSSL
pip or easy_install
2、
安裝必備軟件
sudo apt-get install libevent-dev
sudo apt-get install python-dev
sudo apt-get install libxml2-dev
sudo apt-get install libxslt1-dev
sudo apt-get install python-setuptools
<!-- more -->
3、安裝Scrapy
sudo apt-get install Scrapy
創(chuàng)建項目
以爬取mininova中的EBOOK種子鏈接、名稱、大小為例
1、進入存儲代碼的目錄中,運行下列命令
scrapy startproject mininova
該命令將會創(chuàng)建包含下列內(nèi)容的mininova目錄
mininova/
scrapy.cfg
mininova/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
...
這些文件分別是:
scrapy.cfg:項目的配置文件
mininova/:該項目的python模塊。
mininova/items.py:項目中的item文件
mininova/pipelines.py:項目中pipelines文件
mininova/settings.py:項目的設(shè)置文件
mininova/spiders/:放置spider代碼的目錄
2、定義Item
編輯mininova目錄中的items.py文件:
import scrapy
class MininovaItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
size = scrapy.Field()
3、編寫第一個爬蟲(Spider)
為了創(chuàng)建一個Spider,必須繼承scrapy.Spider類,且定義一下三個屬性:
name:用于區(qū)別Spider。該名字必須是唯一的,不可以為不同的Spider設(shè)定相同的名字。
start_urls:包含了Spider在啟動時進行爬取的url列表。因此,第一個被獲取到的頁面將是其中之一。后續(xù)的URL則從初始的URL獲取到的數(shù)據(jù)中提取。
parse():是spider的一個方法。被調(diào)用時,每個初始URL完成下載后生成的Response對象將會作為唯一的參數(shù)傳遞給該函數(shù)。該方法負責解析返回的數(shù)據(jù)(response data),提取數(shù)據(jù)(生成item)以及生成需要進一步處理的URL的Request對象。
以下為我們的第一個Spider代碼,保存在mininova/spiders目錄下的mininova_spider.py文件中:
import scrapyfrom mininova.items import MininovaItem
class MininovaSpider(scrapy.Spider):
name = 'mininova'
allowed_domains = ['mininova.org']
start_urls = ['http://www.mininova.org/sub/50/name/1']
def parse(self,response):
sites = response.xpath('//table[@class="maintable"]//tr')
for site in sites:
item = MininovaItem()
item['title'] = site.xpath('td/a[not(@class="ti com")]/text()').extract()
for url in site.xpath('td/a[@class="dl"]/@href').extract():
item['link'] = 'http://www.mininova.org' + url
for size in site.xpath('td[3]/text()').extract():
size = size.encode('utf-8')
item['size'] = size.replace('\xc2\xa0','')
yield item
4、爬取
進入項目的根目錄,執(zhí)行下列命令啟動spider:
scrapy crawl mininova
5、保存爬取到的數(shù)據(jù)
scrapy crawl mininova -o items.json
原文來自:簡書/迷途老鷹
20 14 9 14 6 17 11 8 3 22 0 4 13 20 16 11 14 8 5 0 18 21 0 10 2 0 16 15 21 9 23 22 3 0 17 8 24 14 24 10 19 22 0 4 16 0 3 20 5 2