1. 程式人生 > >scrapy基本使用(一)

scrapy基本使用(一)

desc 範圍 esc 取數據 source 使用 解析 target logs

scrapy基本使用(一)

參考文檔:Scrapy入門教程 http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html

1、 安裝

python3.5 按照官網大寫的安不上,要是小寫的才能安上

pip install scrapy

理論上如果報錯,再看幾遍就好了,至少我是這樣,可能是網絡問題吧。

2、 基礎操作

1) 創建項目

這是第一步,因為我們要使用人家搭好的框架,這步就是生成框架。

scrapy startproject tutorial

執行成功會在當前目錄生成一個文件夾。

2) 文件夾裏的內容

官網說的很詳細了,這裏引用官網,我根據自己淺薄的知識理解一下。

scrapy.cfg: 項目的配置文件

tutorial/: 該項目的python模塊。之後您將在此加入代碼。(這才是核心呀。。)

tutorial/items.py: 項目中的item文件.(這是創建容器的地方,爬取的信息分別放到不同容器裏)

tutorial/pipelines.py: 項目中的pipelines文件.

tutorial/settings.py: 項目的設置文件.(我用到的設置一下基礎參數,比如加個文件頭,設置一個編碼)

tutorial/spiders/: 放置spider代碼的目錄. (放爬蟲的地方)

3) 定義容器(items.py)

我個人認為,容器不用一開始就定好,應該是一點一點加的,但是官網就這個順序。。

修改items.py

import scrapy

class DmozItem(scrapy.Item): #創建一個類,繼承item類,就是繼承人家寫好的容器嘛
    title = scrapy.Field() # 取哪些內容,就創建哪些容器
    link = scrapy.Field()
    desc = scrapy.Field()

3、 爬蟲的編寫

例子:

import scrapy

class DmozSpider(scrapy.Spider): # 繼承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): filename = response.url.split("/")[-2] # 獲取url,用”/”分段,獲去倒數第二個字段 with open(filename, wb) as f: f.write(response.body) # 把訪問的得到的網頁源碼寫入文件

這裏需要重點說一下parse方法

被調用時,每個初始URL完成下載後生成的 Response 對象將會作為唯一的參數傳遞給該函數。

該方法負責解析返回的數據(response data),提取數據(生成item)以及生成需要進一步處理的URL的 Request 對象。

簡單說就是用來編寫爬蟲的主體,response就是網頁源碼。

4、 啟動爬蟲

一條命令:

scrapy crawl dmoz

執行爬蟲的時候發生了什麽?

Scrapy為Spider的 start_urls 屬性中的每個URL創建了 scrapy.Request 對象,並將 parse 方法作為回調函數(callback)賦值給了Request。

例:

yield scrapy.Request(self.url + nextLink, callback=self.parse)

Request對象經過調度,執行生成 scrapy.http.Response 對象並送回給spider parse() 方法。

這裏我們了解到請求鏈接的改變是靠回調函數實現的。

scrapy基本使用(一)