栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

案例(一)爬取优美图库风景壁纸

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

案例(一)爬取优美图库风景壁纸

文章目录
    • 一、分析页面
    • 二、爬取的关键步骤
        • 2.1 初步信息获取
        • 2.2 查找抓取信息
        • 2.3 抓取新页面
        • 2.4 获取新页面的图片真正的下载地址
        • 2.5 遍历所有新页面的抓取信息,获取图片的SRC属性
    • 三、完整代码
    • 四、总结

一、分析页面

网页链接:https://www.umei.cc/bizhitupian/fengjingbizhi/index.htm
通过分析得出:
1、图片的下载地址在新的页面(newpage_url)img标签的src属性里面
2、由于BeautiSoup就是借助网页的结构和属性等特性来解析网页的,因此使用BeautifulSoup更快更高效。

二、爬取的关键步骤 2.1 初步信息获取

请求方式:GET
实际请求地址:https://www.umei.cc/bizhitupian/fengjingbizhi/index.htm
用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36
请求参数:无

2.2 查找抓取信息
soup = BeautifulSoup(res.text,"html.parser")
a_list = soup.find("div",class_="TypeList").find_all("a")
2.3 抓取新页面

拼接新打开页面地址:item_url = “https://www.umei.cc” + item[‘href’]

item_res = requests.get(item_url)
item_res.encoding='utf-8'
item_soup = BeautifulSoup(item_res.text,'html.parser')
2.4 获取新页面的图片真正的下载地址
p_list = item_soup.find('div',class_='ImageBody').find_all('p',align="center")
2.5 遍历所有新页面的抓取信息,获取图片的SRC属性
for img_list in p_list:
        img_src = img_list.find("img")["src"]
三、完整代码
import requests
from bs4 import BeautifulSoup
import time
import random

url = "https://www.umei.cc/bizhitupian/fengjingbizhi/index.htm"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
}
res = requests.get(url, headers=headers)
res.encoding = "utf-8"

# bs对象
soup = BeautifulSoup(res.text, "html.parser")
div = soup.find("div", class_="TypeList")
a_list = soup.find("div", class_="TypeList").find_all("a")
for item in a_list:
    # img里面的地址是资源地址
    # 新网页的地址
    newpage_url = "https://www.umei.cc" + item['href']
    # 访问newpage_url
    newpage_res = requests.get(newpage_url)
    # 构建bs对象
    newpage_soup = BeautifulSoup(newpage_res.text, "html.parser")
    # 图片的下载地址在p标签的img标签的src属性里面里
    img_src = newpage_soup.find("p", align="center").find("img")['src']
    img_name = img_src.split("/")[-1]
    img_res = requests.get(img_src)

    with open("img/"+img_name, mode="wb") as f:
        f.write(img_res.content)
        print(img_name+"is complete!")
        # 降低服务器负担
        time.sleep(1+random.random())

爬取的30张图片~

四、总结

第一,这里只抓取了一页的图片,可以通过构建抓取页面地址列表,封装抓取函数爬取多页图片。第二,设置文件夹属性为Excluded,避免每次下载图片时python自动为图片建立索引,提高程序性能。

写blogs就像复盘一样,哈哈!下一个案例写爬取北京新发地菜价,记录一下成长足迹还是很不错滴~
Take a few minutes to appreciate what you have and how far you’ve come~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/422766.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号