python網絡爬蟲(一) 爬取網站圖片

網絡爬蟲系列

python網絡爬蟲(一) 爬取網站圖片
python網絡爬蟲(二)分頁爬取圖片

什麼是網絡爬蟲?

網絡爬蟲(Web Spider),又被稱爲網頁蜘蛛,是一種按照一定的規則,自動地抓取網站信息的程序或者腳本。網絡蜘蛛是通過網頁的鏈接地址來尋找網頁,從網站某一個頁面開始,讀取網頁的內容,找到在網頁中的其它鏈接地址,然後通過這些鏈接地址尋找下一個網頁,這樣一直循環下去,直到把這個網站所有的網頁都抓取完爲止。

爬蟲流程

用戶獲取網絡數據的方式:

  • 方式1:瀏覽器提交請求—>下載網頁代碼—>解析成頁面
  • 方式2:模擬瀏覽器發送請求(獲取網頁代碼)->提取有用的數據->存放於數據庫或文件中,爬蟲要做的就是方式2。

  1. 發起請求

    • 使用request模塊的get、post函數
    • 使用url全球統一資源定位符,用來定義互聯網上一個唯一的資源 例如:一張圖片、一個文件、一段視頻都可以用url唯一確定。
    • 請求頭User-agent:請求頭中如果沒有user-agent客戶端配置,服務端可能將你當做一個非法用戶host;
    • 請求體如果是get方式,請求體沒有內容 (get請求的請求體放在 url後面參數中,直接能看到)
      如果是post方式,請求體是format data。
  2. 網站相響應

    • 返回值含義:200爲代表成功,301爲代表跳轉,404爲文件不存在,403爲無權限訪問,502爲服務器錯誤。

利用python request庫爬取網站圖片

  • 爬取網站:http://desk.zol.com.cn/dongman/1920x1080/
  • 進入網站後右擊審查,查看Elements部分:
    在這裏插入圖片描述
  • 鼠標移動到一張圖片上,會顯示圖片信息:
    在這裏插入圖片描述
    我們需要的就是img標籤下的src部分。
  • 接下來查看Network部分,選擇Img查看相關信息,得到User-Agent和Referer的信息作爲Headers的一部分:

在這裏插入圖片描述

  • 具體代碼見代碼部分。

代碼部分

import  requests
import time
from lxml import etree
url = 'http://desk.zol.com.cn/dongman/1920x1080/'

headers = {"Referer":"Referer: http://desk.zol.com.cn/dongman/1920x1080/",
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",}

resq = requests.get(url,headers = headers)

print(resq)

html = etree.HTML(resq.text)
srcs = html.xpath(".//img/@src")

for i in srcs:
    imgname = i.split('/')[-1]
    img = requests.get(i,headers = headers)
    with open('imgs1/'+imgname,'wb') as file:
        file.write(img.content)
    print(i,imgname)

爬取結果

  • 顯示爬取的信息
    在這裏插入圖片描述
  • 在相應文件夾下查看圖片是否爬取成功
    在這裏插入圖片描述
    可以發現圖片成功爬取了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章