python3 requests+bs4爬取某网页MM图片

本文介绍了一个使用Python3的requests和bs4库实现的网页图片爬取案例,详细展示了如何从指定网页抓取MM图片,包括获取HTML页面、解析数据、创建文件夹以及保存图片的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python3 requests+bs4爬取某网页MM图片

原理:
将所要抓取的首页分标题及地址保存到字典,遍历字典,对每一个标题下的所有分页进行抓取

  • 首页结构图
  • 抓取页结构图
import requests    
from bs4 import BeautifulSoup
import urllib
import os
import re
 
#获取网页Html页面
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return ""
 
#为图片创建文件夹并保存
def get_img(path,url):
    path = "D://e//" + path
    isExists=os.path.exists(path)
    if not isExists:
        os.makedirs(path) 
    i = 3
    while True:
        n = url.find("/",(len(url)-i))
        if n<0:
            i = i + 1
        else:
            break
    img = requests.get(url) 
    f = open(path+"//"+url[n+1:],'ab') 
    f.write(img.content)
    f.close()
    print("文件保存成功") 
def get_in_html(url) :
    start_url=url
    html=getHTMLText(start_url)
    soup = BeautifulSoup(html,"html.parser")
    pageInfo = soup.find(class_="itempage")
    ss  =str(pageInfo.contents[0])
    name = soup.h1.text
    page2 =int(ss[4:-7])
    tag_soup = soup.find(class_="picsbox picsboxcenter")
    imgUrl = tag_soup.img["src"]
    print("第1页")
    get_img(name,imgUrl)
    i = 2
    while i<=int(page2):
        temp_url = start_url[:-5] + "_" + str(i) + ".html"
        html=getHTMLText(temp_url)
        soup = BeautifulSoup(html,"html.parser")
        tag_soup = soup.find(class_="picsbox picsboxcenter")
        imgUrl = tag_soup.img["src"]
        print("第" + str(i) + "页")
        get_img(name,imgUrl)
        i = i+1

def main():
    
    pa = 1
    info = {}
    while pa<=20:
        start_url="https://******xiaohua/list_6_%d.html"%pa#7160
        html=getHTMLText(start_url)
        soup = BeautifulSoup(html,"html.parser")
        for k in soup.select("body > div > div.center > div > div.news_bom > div.news_bom-left > ul > ul > li > a"):
            info[(start_url[0:(start_url.find(".com")+4)]) + k['href']] = k['title']
        pa = pa + 1
    print(len (info))
    for k in info.keys():
        print("开始网页:"+ k)
        get_in_html(k) 
 
main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值