Scrapy八小時快速入門第一小時:安裝,建立與執行咱們的Scrapy爬蟲

安裝

安裝Scrapy很是簡單,只須要在終端輸入pip install scrapy,而後執行命令便可,若是不行,那麼通常是底層庫的問題,可使用codna install --upgrade scrapy代替以前的命令,雖然anconda的庫更新要慢一些,不過通常沒什麼問題css

建立項目

請在命令行下scrapy startproject name便可,示例以下,當咱們使用命令以後,scrapy就會幫咱們建立相應的項目:
建立Scrapy項目python

這時候咱們能夠tree一下,查看咱們的目錄結構,其中的spider文件夾,就是咱們編寫咱們本身的腳本的地方git

tree 展現效果

Scrapy 框架除了基本的Response,request,Downloader,等以外,其強大之處就是幫助咱們實現了幾乎整個流程,在最基本的狀況下,咱們甚至只須要編寫十幾行代碼就能夠完成一個爬蟲.github

好比其中的item文件中編寫的是對數據封裝的方法markdown

其中的pipline.py 是用來編寫數據處理的方法的,在Spider中的咱們本身編寫的spider執行以後,咱們就能夠調用item中的方法對獲取的數據進行處理,框架

而setting則是配置文件,除此以外咱們還可使用Scrapy提供給咱們的不少已經寫好的方法,或者重寫他們來實現一些咱們須要的功能,而這一切又都是很是簡單的. dom

咱們這裏再從github上Scrapy 的項目中下載一個demo,或者也能夠從個人這個地址下載相應的內容,以後個人這個系列的代碼都會放在這個地址scrapy

咱們tree一會兒這個文檔,就能夠查看到相應的內容,示例以下:ide

tree booksbot

下面是其中的示例代碼:函數

# -*- coding: utf-8 -*-
import scrapy


class BooksSpider(scrapy.Spider):
    # 首先要繼承原來額Spider方法
    name = "books"
    # 而後是name ,用於在終端中執行該腳本
    # allowed_domains = ["books.toscrape.com"]
    # 
    start_urls = [
        'http://books.toscrape.com/',
    ]
    # 咱們須要一個start url

    def parse(self, response):
        for book_url in response.css("article.product_pod > h3 > a ::attr(href)").extract():
            yield scrapy.Request(response.urljoin(book_url), callback=self.parse_book_page)
        # 而後是獲取相應內容,並建立解析函數
        next_page = response.css("li.next > a ::attr(href)").extract_first()
        if next_page:
            yield scrapy.Request(response.urljoin(next_page), callback=self.parse)
        # 關鍵之處之一,找到下一個連接

    def parse_book_page(self, response):
        # 解析函數,咱們在Scrapy中使用,Selector與xpath選擇器,css選擇器與一些其餘Python代碼實現該功能
        item = {}
        product = response.css("div.product_main")
        item["title"] = product.css("h1 ::text").extract_first()
        item['category'] = response.xpath(
            "//ul[@class='breadcrumb']/li[@class='active']/preceding-sibling::li[1]/a/text()"
        ).extract_first()
        item['description'] = response.xpath(
            "//div[@id='product_description']/following-sibling::p/text()"
        ).extract_first()
        item['price'] = response.css('p.price_color ::text').extract_first()
        yield item

至於,這份代碼的詳細解釋,我會在以後的內容中給出,固然這份簡單的demo是不能幫助咱們真正的入門的,咱們還須要一些其餘內容,以後我會寫更多的demo.

執行

scrapy crawl name -o xxxxx.csv,這時候咱們能夠在剛剛的tree的路徑下,繼續執行爬蟲的命令,效果如圖:
執行Scrapy爬蟲

圖片上面是執行完畢後的留下的日誌,而下面則是咱們剛剛執行的命令.

如今咱們就能夠看看咱們獲取的信息究竟是不是咱們的start_url了:

Scrapy 的爬蟲練習網站

books_csv

看來沒什麼問題

提供參考

  1. FontTian的Scrapy爬蟲入門
  2. FontTian的Scrapy爬蟲教程的Github項目
  3. Scrapy的Github
相關文章
相關標籤/搜索