天天看點

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

本文用 Scrapy 爬蟲架構爬取專門供爬蟲初學者訓練用的網站:http://books.toscrape.com/
  • 打開虛拟環境建立項目檔案
      • 打開控制台輸入workon py3scrapy
      • 進入虛拟環境所在盤我的是E盤
      • 建立項目檔案輸入scrapy startproject demo建立的項目檔案叫demo
      • 檢視項目目錄下的檔案輸入treeF demo
  • 打開所爬取網站分析所爬取的内容
  • 編寫代碼實作爬蟲
  • 運作代碼抓取資料

打開虛拟環境,建立項目檔案

打開控制台,輸入

workon py3scrapy

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

進入虛拟環境所在盤(我的是E盤)

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

建立項目檔案,輸入

scrapy startproject demo

(建立的項目檔案叫demo)

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

在E盤可以找到所建立的檔案夾。

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

檢視項目目錄下的檔案,輸入

tree/F demo

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

好,到此項目檔案就建立成功了。

打開所爬取網站,分析所爬取的内容。

可以看出,每一本書的資訊包裹在

<article class="product_pod">

元素内

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

書名資訊在其下的

**h3** > a元素的 **title** 屬性中

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

書價資訊在其下

<p class="price_color">£51.77</p>

的文本中。

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

由于這個網頁有50頁,下一頁的URL在

ul.pager>li.next>a元素的href屬性中

如:

<li class="next"><a href="catalogue/page-2.html" target="_blank" rel="external nofollow" >next</a></li>

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

編寫代碼,實作爬蟲

spider

目錄下,建立一個

book_spider.py

檔案。

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

運作無錯誤。

代碼如下:

# -*- coding:utf-8 -*-
import scrapy
class BooksSpider(scrapy.Spider):
    #爬蟲唯一辨別
    name = "books"
    #爬取的起始點
    start_urls = ['http://books.toscrape.com/']

    def parse(self, response):
        #提取資訊
        for book in response.css('article.produce_pod'):
            #書名資訊
            name = book.xpath('./h3/a/@title').extract_first()
            #書價資訊
            price = book.css('p.price_color::text').extract_first()

            yield{
                'name':name,
                'price':price,
            }
        #提取連結
        next_url = response.css('ul.pager li.next a::attr(href)').extract_first()
        if next_url:
            #如果找到下一位URL,得到絕對路徑,構造新的Request對象
            next_url = response.urljoin(next_url)
            yield scrapy.Request(next_url, callback = self.parse)
           

運作代碼,抓取資料

在控制台輸入

scrapy crawl books -o books.csv

回車

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

等程式運作完,在demo檔案夾裡可以找到:

Scrapy爬取知名網站的圖書資訊打開虛拟環境,建立項目檔案打開所爬取網站,分析所爬取的内容。編寫代碼,實作爬蟲運作代碼,抓取資料

好,抓取完畢。