1. 程式人生 > >python3程式設計08-爬蟲實戰:爬取網路圖片

python3程式設計08-爬蟲實戰:爬取網路圖片

本篇部落格爬取內容如下:


爬取校花網的圖片

 

準備工作:

1.安裝python3

2.安裝pycharm

3.安裝Scrapy,參考:Scrapy安裝

 

cmd命令新建Scrapy工程

1. 在D:\PythonProjects目錄下新建出一個名為pycodes的資料夾

 

2. Win+R 開啟cmd命令列,用命令切換到D:\PythonProjects\pycodes目錄下

   切換到d盤下,在cmd命令列下輸入"d:"

d:

   進入到d盤 D:\PythonProjects\pycodes目錄下

cd D:\PythonProjects\pycodes

3. 通過命令新建一個scrapy工程:

scrapy startproject pyscrapydemo

 

有如上“You can start your first spider with:”輸出為成功建立scrapy工程。

4. 檢視pycodes目錄下生成了工程資料夾:

我們可以進入到spider目錄下寫我們的python爬蟲程式 

例如建立了一個爬蟲 demo.py,用命令scrapy crawl demo執行。

這裡只是演示如何用命令建立一個scrapy工程,瞭解命令的作用以及執行命令後產生了什麼變化即可。

 

用Scrapy爬取校花網圖片

1. 建立工程

開啟PyCharm軟體,用PyCharm建立一個python專案:xiaohua(名字隨意取)

點選PyCharm左下角Terminal進入命令列

  1. 2.建立Scrapy爬蟲專案
scrapy startproject myfirstspider

3.建立一隻簡單爬蟲

進入到爬蟲專案目錄myfirstspider

cd myfirstspider

建立爬蟲

語法:scrapy genspider [引數] <爬蟲名> <域名>

scrapy genspider -t basic xiaohua xiaohuar.com

其中:-t 為模板 

執行以上命令後,在spiders目錄下生成xiaohua.py檔案:

 4.編寫爬蟲程式碼

編輯xiaohua.py,內容如下:

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request
import re

class XiaohuaSpider(scrapy.Spider):
    name = 'xiaohua'
    allowed_domains = ['xiaohuar.com']
    start_urls = []
    #修改range()括號裡的內容可以調整下載頁面數量
    for i in range(3):
        url = "http://www.xiaohuar.com/list-1-%s.html" %i
        start_urls.append(url)

    def parse(self, response):
        if "www.xiaohuar.com/list-1" in response.url:
            # 下載的html原始碼
            html = response.text
            # 網頁中圖片儲存地址:src="/d/file/20160126/905e563421921adf9b6fb4408ec4e72f.jpg"
            # 通過正則匹配到所有的圖片
            # 獲取的是圖片的相對路徑的列表
            # \d+代表匹配一個或多個數字
            # \w+代表匹配一個或多個字母、數字、下劃線的字元
            img_urls = re.findall(r'/d/file/\d+/\w+\.jpg', html)

            # 使用迴圈對圖片頁進行請求
            for img_url in img_urls:
                # 將圖片的URL補全
                if "http://" not in img_url:
                    img_url = "http://www.xiaohuar.com%s" % img_url

                # 回撥,返回response
                yield Request(img_url)
        else:
            # 下載圖片
            url = response.url
            # 儲存的圖片檔名
            title = re.findall(r'\w*.jpg', url)[0]
            # 儲存圖片,儲存的目錄要先創建出來
            with open('D:\\xiaohua_img\\%s' % title, 'wb') as f:
                f.write(response.body)

D盤下新建xiaohua_img資料夾,用於儲存爬蟲圖片

5.執行爬蟲程式

scrapy crawl xiaohua

 

6.檢視結果

檢視在D:\xiaohua_img資料夾下,爬蟲下載了校花圖片,如下圖。

 

小結:

Scrapy寫爬蟲程式的步驟:

1.建立工程

2.新建專案>scrapy startproject myfirstspider

3.建立爬蟲

   >cd myfirstspider

   >scrapy genspider -t basic xiaohua xiaohuar.com

4.編寫爬蟲程式碼xiaohua.py

5.執行爬蟲程式>scrapy crawl xiaohua

6.檢視結果

 

完成! enjoy it!