天天看點

爬蟲scrapy架構的學習

1. 安裝scrapy架構:

pip install scrapy 或者 conda install scrapy (我用的是anaconda環境)

2.什麼是scrapy:

Scrapy是一個為了爬取網站資料,提取結構性資料而編寫的應用架構,我們隻需要實作少量的代碼,就能夠快速的抓取。

Scrapy 使用了 Twisted['twɪstɪd]異步網絡架構,可以加快我們的下載下傳速度。

3.scrapy的工作流程:

一般的爬蟲流程為:

爬蟲scrapy架構的學習

scrapy的爬蟲流程為:

爬蟲scrapy架構的學習

4.scrapy架構各部分簡介:

爬蟲scrapy架構的學習

5.開始scrapy入門:

   1.建立一個scrapy項目(需要Terminal定位到指定的檔案處,mySpider為你需要建立的項目名字,即:scrapy startproject  <項目名字>)

           E:\PycharmProjects\Spider_Projects>scrapy startproject mySpider

           生成的檔案結構為(指令:E:\PycharmProjects\Spider_Projects\myspider>tree):

爬蟲scrapy架構的學習

  2.生成一個爬蟲  (koolearn為要生成的koolearn.py檔案,koolearn.cn要爬取的範圍)

            E:\PycharmProjects\Spider_Projects>scrapy genspider koolearn "koolearn.cn”

  3.提取資料

           在生成的xxxx.py中完善spider,使用xpath等方法

class ItcastSpider(scrapy.Spider): # 自定義spider類,繼承自scrapy.spider
    name = 'itcast'  # 爬蟲名字<爬蟲啟動時使用:scrapy crawl itcast>
    allowed_domains = ['koolearn.cn.cn']  # 允許爬取的範圍,防止爬蟲爬取到别的網站
    start_urls = ['http://www.koolearn.cn.cn/XXXX/XXXXX']  # 最開始請求的url位址

    def parse(self, response):# 資料提取方法,接收下載下傳中間件傳過來的response
        # 分組
        li_list = response.xpath("//div[@class='tea_con']//li")
        for li in li_list:
            item = {}
            item["name"] = li.xpath(".//h3/text()").extract_first()
            item["title"] = li.xpath(".//h4/text()").extract_first()
            # print(item)
            # Request, BaseItem, dict or None
            yield item
           

  從選擇器中提取字元串:

         extract(): 傳回一個包含有字元串資料的清單

         extract_first(): 傳回清單中的第一個字元串

注意:

       1. spider方法中的parse方法名不能修改

       2.需要爬取的url位址必須要屬于allow_domain下的連接配接

       3.response.xpath()傳回的是一個含有selector對象的清單

4.儲存資料

          在pipeline中儲存資料,需要在setting中設定開啟

爬蟲scrapy架構的學習

OK,暫時先這些吧(我是有底線的————————————)。