成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一日一技:為什么 Scrapy 啟動 A 爬蟲,B 爬蟲會自動啟動?

開發 項目管理
他在一個 Scrapy 項目里面,有兩個爬蟲 A 和 B,他使用命令scrapy crawl B想啟動 B 爬蟲,但是發現 A 爬蟲也自動運行了。

[[425562]]

昨天有位同學在公眾號俱樂部群問了這樣一個問題:

他在一個 Scrapy 項目里面,有兩個爬蟲 A 和 B,他使用命令scrapy crawl B想啟動 B 爬蟲,但是發現 A 爬蟲也自動運行了。

然后,這個同學貼上來他的爬蟲代碼:

看到這個代碼,我就知道是怎么回事了。要解釋這個現象,我們需要掌握兩個知識點:

Scrapy 是怎么加載爬蟲的?

Python 的類變量與實例變量的區別。

Scrapy 是怎么加載爬蟲的?

我們知道,Scrapy 的 spiders 文件夾里面,可以定義很多個爬蟲文件。只要每個爬蟲文件的 name 的值不一樣,那么,我們就可以使用scrapy crawl name 的值來啟動特定的爬蟲。

那么,Scrapy 它是怎么根據這個名字找到對應的類的呢?

實際上,在我們執行scrapy crawl xxx的時候,Scrapy 有幾個主要的步驟:

  • 首先遍歷spiders 文件夾下面的所有文件,在這些文件里面,尋找繼承了scrapy.Spider的類
  • 獲取每個爬蟲類的name屬性的值
  • 添加到一個公共的字典里面{'name1': 爬蟲類1, 'name2': '爬蟲類2'}
  • 獲取scrapy crawl xxx具體要啟動的那個爬蟲的名字,從公共字典里面,找到這個名字對應的爬蟲類
  • 執行這個爬蟲類,得到一個爬蟲對象。然后調用爬蟲對象的start_requests()方法

從這個過程我們可以知道,spiders 文件夾下面,每一個爬蟲類都會被加載。

Python 的類屬性和實例屬性

在我們定義Python 類的時候,我們其實可以在類里面,所有方法的外面寫代碼,例如:

  1. class Test: 
  2.     a = 1 + 1 
  3.     b = 2 + 2 
  4.     if a + b == 6: 
  5.         right = True  
  6.     else
  7.         right = False 
  8.     def __init__(self): 
  9.         self.age = 100 
  10.         self.address = '上海' 

大家注意這幾行代碼:

  1. a = 1 + 1 
  2. b = 2 + 2 
  3. if a + b == 6: 
  4.     right = True  
  5. else
  6.     right = False 

他們不在任何方法里面的,這里面初始化的變量,叫做類變量或者類屬性。而在__init__里面,初始化的self.age和self.address叫做實例屬性。

實例屬性只有在類被執行的時候,獲得實例對象的時候,才會執行。而類屬性,是在類被 Python 加載的時候,就會執行。大家注意下面這段代碼:

Python 只是加載了這個類,并沒有初始化它,但里面的 print語句已經執行了。

而當我們初始化它以后,實例屬性才會執行:

什么情況叫做Python 加載了一個類呢?

例如,當你from xxx import yyy的時候,yyy這個類就被加載了。又比如你可能是使用imortlib.import_module的時候。

所以,回到這個同學的問題。之所以他其中一個爬蟲的代碼始終會運行,原因就在下面紅色圓圈中的代碼:

他把這段代碼寫在了所有方法之外,讓他處于了類屬性的區域。在這個區域里面的代碼,在爬蟲類被加載的時候,就會執行。

如果要解決這個問題,只需要把這段代碼,放到start_requests()方法里面就可以了。

本文轉載自微信公眾號「未聞Code」,可以通過以下二維碼關注。轉載本文請聯系未聞Code公眾號。

 

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2021-06-08 21:36:24

PyCharm爬蟲Scrapy

2024-10-16 21:47:15

2023-10-28 12:14:35

爬蟲JavaScriptObject

2025-05-28 03:15:00

Scrapy數據sleep

2022-01-26 07:35:10

爬蟲Requestsgzip

2024-05-24 09:07:06

JSONprint字符串

2021-10-03 20:08:29

HTTP2Scrapy

2021-12-15 22:04:11

瀏覽器重復登錄

2020-12-04 06:39:25

爬蟲網頁

2022-01-08 21:27:02

URL爬蟲地址

2024-11-11 00:38:13

Mypy靜態類型

2022-01-26 00:19:17

反爬蟲爬蟲服務器

2020-12-17 06:22:57

交互模式代碼

2021-10-15 21:08:31

PandasExcel對象

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2024-09-05 12:11:25

大模型抓取列表頁

2021-04-12 21:19:01

PythonMakefile項目

2022-06-28 09:31:44

LinuxmacOS系統

2021-09-13 20:38:47

Python鏈式調用

2024-11-13 09:18:09

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲天堂成人在线视频 | 日韩福利在线 | 精品自拍视频在线观看 | 浮生影院免费观看中文版 | 久草免费在线视频 | 久草视频在线播放 | 不卡一区| 欧美性生活免费 | 亚洲网址在线观看 | 久久久片 | 国产视频久| 国产成人午夜电影网 | 国产一级淫片a直接免费看 免费a网站 | 久久久精彩视频 | 久草成人网 | 欧美三级电影在线播放 | 国产欧美精品一区二区三区 | 91精品国产91久久久久久最新 | 中文字幕免费在线 | 在线日韩视频 | 欧美在线综合 | 99久久久国产精品免费消防器 | 超碰在线人人 | 久久黄色精品视频 | 999精品视频 | 欧美在线 | 国产在线一区二 | av入口| 久久男人天堂 | 成人a视频片观看免费 | 欧美成人精品激情在线观看 | 精品国产欧美日韩不卡在线观看 | 国产一区二区美女 | 亚洲香蕉| 99久久婷婷国产综合精品 | 国产毛片毛片 | 日韩中文字幕在线免费 | 三级视频网站 | 久久国产精品亚洲 | 99这里只有精品视频 | 欧美理论片在线 |