python 基礎之scrapy 原理練習

donghongchao發表於2024-07-16

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)

相關文章