1、Scrapy Engine(引擎元件):
負責Spider、ItemPipeline、Downloader、Scheduler的工作排程、資訊通訊、資料傳遞等工作
2、Scheduler(排程元件):
負責接收引擎傳遞過來的請求,按照具體規則新增佇列處理,最終返回給引擎
3、Downloader(下載元件):
負責下載引擎傳遞過來的所有Request請求,最終伺服器的響應資料返回給引擎元件
4、Spider(爬蟲):
處理所有Response響應,分析提取Item資料
如果資料中有二次請求,繼續交給引擎元件
5、ItemPipeline(管道):
負責[分析、過濾、儲存]處理由Spiders獲取到的Item資料
1、引擎向spiders要url
2、引擎將要爬取的url給排程器
3、排程器會將url生成請求物件放入到指定的佇列中
4、從佇列中出隊一個請求
5、引擎將請求交給下載器進行處理
6、下載器傳送請求從網際網路上獲取資料
7、下載器將資料返回給引擎
8、引擎將資料再次給spiders
9、spiders透過xpath解析器解析資料,解析到資料或者url
10、spiders將資料或者url給引擎
11、引擎判斷是資料還是url,資料交給管道處理,url交給排程器處理
12、管道將資料持久化儲存
新版scrapy 簡單好用
import scrapy
class CarhomeSpider(scrapy.Spider):
name = "carhome"
allowed_domains = ["car.autohome.com.cn"]
start_urls = ["https://car.autohome.com.cn/price/brand-15.html"]
def parse(self, response):
price_list = response.xpath("//div[@class='main-lever-right']//span[1]/text()")
# for index in context:
# cat_price = context[index]
# print(cat_price)
name_list = response.xpath("//div[@class='main-title']/a/text()")
for i in range(len(name_list)):
name = name_list[i]
price = price_list[i]
print(name,price)