python爬取煎蛋图片(2018-7-30有效)

本文介绍了一个使用Python编写的煎蛋网图片爬虫程序。通过解析网页源码并解码图片URL,实现对指定页面范围内的图片自动下载。该程序利用了BeautifulSoup和Base64等工具简化了爬虫开发。

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

之前使用java做过点爬虫,这次学了下python,特意用python来练习了下爬虫,爬了下煎蛋mm照片,代码如下(先记录下,下次想看图片了可以用~):

import urllib.request
import os,re,sys
import base64
from bs4 import BeautifulSoup

#获取返回的页面内容
def url_open(url):
    req = urllib.request.Request(url)
    #自定义请求头,获取返回的response,煎蛋上的对访问的Ip好像没做什么控制,因此使用同一台机子也可能作死的爬。。不需要使用多ip
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36')
    response = urllib.request.urlopen(url)
    return response.read()

# 得到总的图片页数
def get_page(url):
    
    html = url_open(url).decode('utf-8')


    htmlSoup = BeautifulSoup(html, "lxml");
    totalPage = int(htmlSoup.find("span","current-comment-page").string[1:-1])

    
     
    
    return totalPage

# 获取图片的url列表
def find_imgs(page_url):
    html = url_open(page_url).decode('utf-8')
    hash_list = []
    img_addr_list = []

     
    # 找到图片url的hash值,原来的只需要直接获取地址就行了,煎蛋给地址稍微加了点密,因此直接是爬取不到了,这里可以获取图片url经过编码后的值,获取之后对其进行解码(这部分我也是网上看来的)
   
    htmlSoup = BeautifulSoup(html, "lxml");
    for eachSpan in htmlSoup.findAll("span","img-hash"):
        hash_list.append(eachSpan.string)
    

    # 获取到hash码之后,然后对齐进行解码
    for eachHashCode in hash_list:
        # 这段是解码的代码
        url = base64.b64decode(eachHashCode).decode('utf-8')
        img_addr_list.append(url)
    # 得到解码后的url列表
    return img_addr_list
        
     

 
    
# 本地图片保存地址
def save_imgs(folder, img_addr_list):
    for each in img_addr_list:
        filename = each.split('/')[-1]
        with open(filename, 'wb') as f:
            img = url_open("http:" + each)
            f.write(img)

def download_pics(folder = 'OOXX', beginPage = 1, endPage = 2):
    
    #如果文件夹不存在,那么进行创建,并切换当当前路径  
    try:
        if(os.path.isdir(folder) == False):
            os.mkdir(folder)
        os.chdir(folder)
    except FileNotFoundError:
        print ("路径出毛病啦!")
        sys.exit(1)
    # 我这里只对煎蛋网上的妹子图做了爬取
    url = "http://jandan.net/ooxx/"
    page_num = int(get_page(url))
    
    if beginPage > endPage:
        print('开始页数大于结束页数!')
        return

    if endPage > page_num:
        print('页数超过了总数!下载到最后一页!')
        endPage = page_num
        

    for currentPage in range(beginPage, endPage + 1):
        
        page_url = url + "page-" + str(currentPage) + "#comments"

         
        img_addr_list = find_imgs(page_url)
        #print(img_addr_list)
        
        save_imgs(folder, img_addr_list)
        print("第%d页已下载完成" % currentPage)
if __name__ == '__main__':
    #download_pics()
    folder = input("输入图片保存路径,默认当前路径下!路径格式(F:/aa/):\n")
    url = "http://jandan.net/ooxx/"
    totalPageNum = int(get_page(url))

    beginPage = int(input("总页数为%d页,请输入开始下载图片的页数:\n" % totalPageNum))
    endPage = int(input("总页数为%d页,请输入结束下载图片的页数:\n" % totalPageNum))

    download_pics(folder, beginPage, endPage);
    
        

对比java爬虫,python果然简单不少,爬起来简单多了,运行这段代码需要安装些插件,出了问题直接百度就行了,然后按照要求,一般pip安装下就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值