内容简介:这篇是上一篇的进阶版,虽然也是下载图片到本地,但比上一篇复杂了许多,上一篇只是下载当前页的图片到本地,这一篇是下载整站的详情页图片到本地,涉及了连续多页爬取,根据 item 创建文件夹保存每个详情页的图片,爬取的数据量大大提升了好几十几百倍,会用到多进程。本次要爬取的网站依然是帅啊 网 我们需要把整站的详情页图片下载到本地
这篇是上一篇的进阶版,虽然也是下载图片到本地,但比上一篇复杂了许多,上一篇只是下载当前页的图片到本地,这一篇是下载整站的详情页图片到本地,涉及了连续多页爬取,根据 item 创建文件夹保存每个详情页的图片,爬取的数据量大大提升了好几十几百倍,会用到多进程。
准备工作
- 开发环境:Windows,Pycharm,Request,BeautifulSoup,urllib
- 需要一定的 Python 爬虫、HTML 基础
开始动身
本次要爬取的网站依然是帅啊 网 我们需要把整站的详情页图片下载到本地
- 制作爬虫
- 由于获取下来的 html 编码格式不对,所以要指定编码格式为 utf-8
- 获取页面中每个 item 的详情页链接
- 获取详情页的所有图片链接(单个或多个)
- 以 item 的标题为文件夹,将详情页的图片下载到该文件夹中
- 抓取下一页(重复 2、3、4 步骤)
from bs4 import BeautifulSoup import requests import os import urllib.request import time headers = { "Cookie": "gsScrollPos-1702684443=0; UM_distinctid=16685e0279d3e0-06f34603dfa898-36664c08-1fa400-16685e0279e133; bdshare_firstime=1539844405694; _d_id=6556c25e9ddd0e7e71096a1e343f6b; gsScrollPos-1702684407=; CNZZDATA1254092508=1744643453-1539842703-%7C1540364765", "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') if wb_data.status_code == 404: return if not os.path.exists(path): # 判断该文件夹是否存在,不存在则创建 os.mkdir(path) links = soup.select(".item-img") for link in links: download_img(link.get('href')) time.sleep(1) # 下一页 next_page = soup.select(".next")[0].get("href") print("------ next page -------") get_links(next_page) print("------ download done -------") def download_img(url): wb_data = requests.get(url, headers=headers) wb_data.encoding = "utf-8" soup = BeautifulSoup(wb_data.text, 'lxml') images = soup.select(".wr-single-content-list img") catalog = soup.select("h1")[0].get_text() # 获取详情页标题作为文件夹名称 catalog = path + catalog + "/" if not os.path.exists(catalog): os.mkdir(catalog) for index, image in enumerate(images): print(index) img = image.get("src") urllib.request.urlretrieve(img, catalog + str(index) + ".jpg") print("-------- downloading ---------") if __name__ == "__main__": get_links("http://www.shuaia.net/index.html") 复制代码
- 开始爬取
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- ReactPHP 爬虫实战:下载整个网站的图片
- 程序员专属的免费电子书下载网站,你知道你几个?
- 在终端上访问网站和下载文件
- 说一下一般网站的视频下载
- Chrome 不想让 HTTPS 网站通过 HTTP 下载文件
- 大型网站技术架构核心原理剖析,文末附知识图谱下载
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Web Designer's Idea Book, Vol. 2
Patrick McNeil / How / 2010-9-19 / USD 30.00
Web Design Inspiration at a Glance Volume 2 of The Web Designer's Idea Book includes more than 650 new websites arranged thematically, so you can easily find inspiration for your work. Auth......一起来看看 《The Web Designer's Idea Book, Vol. 2》 这本书的介绍吧!