利用scrapy框架進行爬蟲

2021-10-04 19:37:00 字數 1998 閱讀 3728

1.安裝2.用scrapy爬蟲四步走:

第一步:編寫items.py

第二步:編寫spiders下的 ***.py 檔案

第三步:編寫pipelines.py檔案

第四步:開啟settings.py 檔案更改配置

3.基於scrapy爬蟲框架,只需在命令列中輸入「scrapy startproject ***」命令,之後乙個名為***的爬蟲專案將自動建立。

4.scrapy框架中執行scrapy crawl douban

5.python中self:

self在定義時需要定義,但是在呼叫時會自動傳入。

self的名字並不是規定死的,但是最好還是按照約定是用self

self總是指呼叫時的類的例項。

6.scrapy框架

spider是乙個繼承自scrapy.contrib.spiders.crawlspider的python類,有三個必需的定義的成員

name: 名字,這個spider的標識,在爬蟲專案中是唯一的

start_urls:乙個url列表,spider從這些網頁開始抓取

parse():乙個方法,當start_urls裡面的網頁抓取下來之後需要呼叫這個方法解析網頁內容,同時需要返回下乙個需要抓取的網頁,或者返回items列表

7.執行scrapy程式有兩種方法:

1、直接命令列啟動

進入到專案的根目錄下,執行下列命令:

1.scrapy crawl ***

2.新建乙個.py檔案,寫入啟動命令,例如run.py:

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

from scrapy.cmdline import execute

execute(

['scrapy'

,'crawl'

,'爬蟲名'

])

9.對於未知節點:xpath可以使用 //* 選取文件中的所有元素

解決方法:

首先要弄明白json有四個方法:dumps和loads、dump和load。其中,dumps和loads是在記憶體中轉換(python物件和json字串之間的轉換),而dump和load則是對應於檔案的處理。

出現這個錯誤的原因是自己用了loads方法去將json檔案轉換為python物件,而正確的應該是使用load方法。

11.變數不能同時作為global變數和子函式傳遞的變數

12.scrapy動態傳參給spider

第一步:定義乙個__init__函式,使用者接受引數:

import scrapy

class

testspider

(scrapy.spider)

:def

__init__

(self, 引數=

none):

if 引數 is

none

: self.引數=

0else

: self.引數=arg

第二步:啟用命令列記得加-a

scrapy crawl 爬蟲名 -a 引數=引數值

14.當url位址不完整時,可以通過python自帶的urllib模組,進行拼接

next_url = response.xpath(

"//li[@class='next']/a/@href"

).extract_first(

)if next_url is

notnone

:# 使用urllib模組中urljoin進行拼接

next_url = urllib.parse.urljoin(response.url,next_url)

scrapy爬蟲框架

作者經過幾周的python爬蟲實踐之後,深入學習了一下scrapy這個爬蟲框架,現將一些基本知識和 總結整理一下,以備後查。2.scrapy的命令列使用 這部分網上很多部落格都有總結,不需要背,理解會用主要的命令 startproject crawl fetch list genspider.即可,...

scrapy 爬蟲框架

1.安裝 公升級pip版本 pip install upgrade pip 通過pip安裝scrapy框架 pip install scrapy 安裝成功 只執行scrapy 進行測試是否安裝成功 2.scrapy startproject 爬蟲專案名稱 執行此命令,可以生成乙個爬蟲專案 會預先生成...

Scrapy爬蟲框架

scrapy中的各大元件及其功能 1.scrapy引擎 engine 引擎負責控制資料流在系統的所有元件中流動,並在相應動作發生時觸發事件。2.排程器 scheduler 排程器從引擎接收request並將它們入隊,以便之後引擎請求request時提供給引擎。4.spider。spider是scra...