В этой статье в основном говорится об использовании запросов + BeautifulSoup + urllib для загрузки изображений и их локального сохранения, а в следующей статье говорится о загрузке изображений всей страницы сведений о сайте и их локальном сохранении (пожалуйста, ждите этого)
Сканирование данных в сети на самом деле очень просто, если вы освоите базовую логику.
- найти сайт;
- HTML-узлы для анализа необходимых данных;
- Загружать данные на локальный сервер или хранить в базе данных
Что ж, без лишних слов, приступим!
Готов к работе
- Среда разработки: Windows, Pycharm, Request, BeautifulSoup, urllib
- Требуется определенный сканер Python и основа HTML.
начать двигаться
-
ясная цель Веб-сайт, который нужно просканировать на этот раз,красивыйсеть(Нажмите на него, чтобы увидеть, есть сюрпризы~[улыбается].png)Нам нужно загрузить фотографии всех предметов с первой страницы сайта на локальный
-
сделать обходчик
- Так как полученный формат кодировки html некорректен, формат кодировки следует указывать как utf-8
- Получить тег изображения каждого элемента на странице
- Цикл, чтобы получить ссылку на изображение (src) и имя изображения (alt) метки
- Загрузить фотографии на локальный
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")
- начать ползать