1. 程式人生 > >python之爬蟲的入門06------scrapy框架

python之爬蟲的入門06------scrapy框架

1、安裝scrapy框架:
pip install scrapy

2、scrapy原理圖:
在這裡插入圖片描述

3、介紹:

Scrapy Engine引擎
引擎負責控制資料流在系統中所有元件中流動,並在相應動作發生時觸發事件。

排程器(Scheduler)
排程器從引擎接受request並將他們入隊,以便之後引擎請求他們時提供給引擎。

下載器(Downloader)
下載器負責獲取頁面資料並提供給引擎,而後提供給spider。

Spiders(爬蟲)
Spider是Scrapy使用者編寫用於分析response並提取item(即獲取到的item)或額外跟進的URL的類。 每個spider負責處理一個特定(或一些)網站。

Item Pipeline
Item Pipeline負責處理被spider提取出來的item。典型的處理有清理、 驗證及持久化(例如存取到資料庫中)。

下載器中介軟體(Downloader middlewares)
下載器中介軟體是在引擎及下載器之間的特定鉤子(specific hook),處理Downloader傳遞給引擎的response(也包括引擎傳遞給下載器的Request)。 其提供了一個簡便的機制,通過插入自定義程式碼來擴充套件Scrapy功能。
一句話總結就是:處理下載請求部分

Spider中介軟體(Spider middlewares)
Spider中介軟體是在引擎及Spider之間的特定鉤子(specific hook),處理spider的輸入(response)和輸出(items及requests)。 其提供了一個簡便的機制,通過插入自定義程式碼來擴充套件Scrapy功能。
一句話總結就是:處理解析部分

4、資料量過程:

1.引擎開啟一個網站(open a domain),找到處理該網站的Spider並向該spider請求第一個要爬取的URL(s)。

2.引擎從Spider中獲取到第一個要爬取的URL並在排程器(Scheduler)以Request排程。

3.引擎向排程器請求下一個要爬取的URL。

4.排程器返回下一個要爬取的URL給引擎,引擎將URL通過下載中介軟體(請求(request)方向)轉發給下載器(Downloader)。

5.一旦頁面下載完畢,下載器生成一個該頁面的Response,並將其通過下載中介軟體(返回(response)方向)傳送給引擎。

6.引擎從下載器中接收到Response並通過Spider中介軟體(輸入方向)傳送給Spider處理。

7.Spider處理Response並返回爬取到的Item及(跟進的)新的Request給引擎。

8.引擎將(Spider返回的)爬取到的Item給Item Pipeline,將(Spider返回的)Request給排程器。

9.(從第二步)重複直到排程器中沒有更多地request,引擎關閉該網站。

5、建立一個scrapy專案:
scrapy startproject mySpider
#mySpider是爬蟲專案名字

6、進入專案,建立爬蟲:
scrapy genspider xxx url
#xxx是爬蟲的名字,不能重複。url是你需要爬取的網頁的url地址

7、用pycharm開啟專案檔案,配置setting:
ROBOTSTXT_OBEY = False
USER_AGENT = ‘你的瀏覽器核心型號’

8、開啟爬蟲開始第一次爬取HTML頁面:
scrapy crawl xxx
#xxx是爬蟲名字

看到200的狀態碼:
(200) <GET https://hr.tencent.com/position.php> (referer: None)
就是爬取已經成功了!!!

class Tx01Spider(scrapy.Spider):
    name = "tx01"
    allowed_domains = ["https://hr.tencent.com"]
    start_urls = (
        'https://hr.tencent.com/position.php',
    )

    def parse(self, response):
        print('爬取成功')


在spider的tx01.py 的 parse裡面 對取到的response進行資料提取