Scarpy爬蟲框架入門

2021-09-02 17:24:33 字數 3013 閱讀 3882

1、python環境,這裡我使用的是python3.6,建議不要使用該版本之後的版本,因為後面還需要安裝對應python版本的pywin32程式,而該程式暫時沒有python3.6後面的對應版本。

2、scrapy 框架,這個直接使用pip install 進行安裝就行。

3、對應python版本的pywin32程式,這個可以根據自己的電腦版本搜尋對應的進行安裝即可(這裡有點小坑,一定要搜尋對應自己python版本以及自己電腦位數的安裝程式,我當時安裝的時候怎麼裝都裝不上,最後搜到了乙個.whl的對應檔案,通過pip install 才安裝上)。

(2)有了軟硬體環境,還需要知道scrapy中的執行邏輯,這裡推薦看看這篇部落格,寫得很形象(但是按照它的教程一步一步下去會會出現很多錯誤,可能跟執行環境有關)。

(1)在命令列中輸入:

scrapy startproject myspider
會得到如下的目錄結構:

它們分別如下意義:

接下來需要定義我們爬取資料的儲存結構,根據我們要爬取得目標(教課老師的資訊),我們需要定義三個屬性,分別是name、title、infor。他們分別代表老師的姓名、頭銜、簡介。

定義結構我們需要在之前生成的items.py檔案中去定義。之前已經生成了myspider這個類了,為了跟目錄名進行區分,我們將該類名改為itcastitem,並且給它定義三個屬性:

import scrapy

class itcastitem(scrapy.item):

# define the fields for your item here like:

# name = scrapy.field()

name=scrapy.field()

title=scrapy.field()

infor=scrapy.field()

pass

為了實現對資料的去重、驗證等操作,我們需要在piplines.py中進行相關的設定,並啟用。

import codecs

import json

class myspiderpipeline(object):

def __init__(self):

pass

self.file = codecs.open('teacher.json', mode='wb', encoding='utf-8')

def process_item(self, item, spider):

line=json.dumps(dict(item),ensure_ascii=false)+'\n'

self.file.write(line)

return item

如上所示,__init__(self)函式是該類別的建構函式,用於初始化操作。在程式中,我們定義輸出的檔名以及開啟的方式等。

然後process_item函式是必須呼叫的用來處理item,並且返回值必須為item類的物件,或者是丟擲dropitem異常。並且上述方法將得到的item實現解碼,以便正常顯示中文,最終儲存到json檔案中。這裡注意一定要在dumps中加入 ensure_ascii=false這句話,否則生成的json檔案會以unicode的編碼格式存放。

最後別忘了還要在settings.py檔案中加入如下**:

item_pipelines =
該**的作用是啟動pipline實現對spider返回資料的按序處理。

經過前面的準備工作,最後就是編寫爬蟲指令碼了。

首先需要在spiders資料夾下新建乙個python檔案,將它命名為itcast,新建itcastspider類,該類有三個必要屬性和乙個必要方法,其中name屬性是啟動爬蟲時用以區分其它爬蟲專案的標誌,allowed_domains屬性是用來限制爬蟲鏈結所屬的域的,start_url則是爬蟲指令碼第一次訪問的鏈結位址。然後還有乙個必要方法即parse方法,這個是定義用來解析爬取到網頁的必須呼叫的乙個方法。**如下所示:

# -*- coding: utf-8 -*-

import scrapy

from myspider.items import itcastitem

class itcastspider(scrapy.spider):

name = 'itcast'

allowed_domains = ['itcast.cn']

start_urls = ['']

def parse(self, response):

print('開始爬蟲...')

for each in response.xpath("//div[@class='li_txt']"):

item=itcastitem()

name=each.xpath("h3/text()").extract()

title=each.xpath("h4/text()").extract()

infor=each.xpath("p/text()").extract()

item['name']=name[0]

item['title']=title[0]

item['infor']=infor[0]

yield item

程式首先對div下所有class為"li_txt"的標籤進行遍歷,然後對其中的每個元素分別進行解析,然後迭代返回item物件給pipline進行存入處理。

最後在命令列中執行啟動爬蟲:

scrapy crawl itcast
爬蟲過程如下:

最後的爬蟲結果如下:

爬蟲框架scarpy報錯

我以為scarpy就是個簡單的庫,安裝後直接import scrapy就行了,執行的時候報錯 import scrapy attributeerror module scrapy has no attribute spider 我還很奇怪為什麼他不報錯 no module named scrapy。...

爬蟲的框架 Scarpy

1 新建scrapy專案 進入專案目錄,按住shift,選擇windows powershell,在彈出的視窗輸入 scarpy startproject 專案名 2 新建爬蟲案例 在新建的專案根目錄中,按住shift,選擇windows powershell,在彈出的視窗輸入 scrapy gen...

Scrapy python爬蟲框架 入門筆記

本文章僅作為個人筆記 scrpy官網 scrpy官方文件 scrpy中文文件 個人scrapydemo專案位址 python環境安裝 pip easy install pip mac下安裝 centos7下安裝 scrapy 安裝pip install scrapy建立專案scrapy startp...