запросы + BeautifulSoup + сканирование urllib и загрузка изображений веб-сайта в локальный (1)

Python рептилия

В этой статье в основном говорится об использовании запросов + BeautifulSoup + urllib для загрузки изображений и их локального сохранения, а в следующей статье говорится о загрузке изображений всей страницы сведений о сайте и их локальном сохранении (пожалуйста, ждите этого)

Сканирование данных в сети на самом деле очень просто, если вы освоите базовую логику.

  1. найти сайт;
  2. HTML-узлы для анализа необходимых данных;
  3. Загружать данные на локальный сервер или хранить в базе данных

Что ж, без лишних слов, приступим!


Готов к работе

  • Среда разработки: Windows, Pycharm, Request, BeautifulSoup, urllib
  • Требуется определенный сканер Python и основа HTML.

начать двигаться

  • ясная цель Веб-сайт, который нужно просканировать на этот раз,красивыйсеть(Нажмите на него, чтобы увидеть, есть сюрпризы~[улыбается].png)Нам нужно загрузить фотографии всех предметов с первой страницы сайта на локальный

  • сделать обходчик

    1. Так как полученный формат кодировки html некорректен, формат кодировки следует указывать как utf-8
    2. Получить тег изображения каждого элемента на странице
    3. Цикл, чтобы получить ссылку на изображение (src) и имя изображения (alt) метки
    4. Загрузить фотографии на локальный
from bs4 import BeautifulSoup
import requests
import os
import urllib.request
import time

headers = {
    "Cookie": "UM_distinctid=16685e0279d3e0-06f34603dfa898-36664c08-1fa400-16685e0279e133; bdshare_firstime=1539844405694; gsScrollPos-1702681410=; CNZZDATA1254092508=1744643453-1539842703-%7C1539929860; _d_id=0ba0365838c8f6569af46a1e638d05",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
}
path = "D://images/"

def get_links(url):
    wb_data = requests.get(url, headers=headers)  # 加入 headers,避免被网站的反爬机制认为是蜘蛛
    wb_data.encoding = "utf-8"
    soup = BeautifulSoup(wb_data.text, 'lxml')

    links = soup.select(".item-img img")
    if not os.path.exists(path):  # 判断该文件夹是否存在,不存在则创建
        os.mkdir(path)
    for link in links:
        time.sleep(1)  # 暂停一秒,避免访问过快被反爬机制认为是蜘蛛
        img = link.get("src")
        img_name = link.get("alt")
        urllib.request.urlretrieve(img, path + img_name + ".jpg")
        print("-------- downloading ---------")

    print("------ download done -------")

if __name__ == "__main__":

    get_links("http://www.shuaia.net/index.html")
  • начать ползать