Python网络爬虫:下载漫画的正确姿势

爬取动漫之家:妖神记

分析:

<ul class="list_con_li autoHeight">
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/76532.html" target="_blank" title="妖神记第174话 回归(下) 2018-05-26">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第174话 回归(下)
    <span class="new">
    </span>
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/76439.html" target="_blank" title="妖神记第174话 回归(上) 2018-05-23">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第174话 回归(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/76280.html" target="_blank" title="妖神记第173话 何处是故乡(下) 2018-05-19">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第173话 何处是故乡(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/76154.html" target="_blank" title="妖神记第173话 何处是故乡(上) 2018-05-16">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第173话 何处是故乡(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/76056.html" target="_blank" title="妖神记第172话 段剑VS司空红月(下) 2018-05-12">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第172话 段剑VS司空红月(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/75700.html" target="_blank" title="妖神记第172话 段剑VS司空红月(上) 2018-05-02">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第172话 段剑VS司空红月(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/75701.html" target="_blank" title="妖神记第171话 如狼似虎的女人(下) 2018-05-02">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第171话 如狼似虎的女人(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/75414.html" target="_blank" title="妖神记第171话 如狼似虎的女人(上) 2018-04-25">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第171话 如狼似虎的女人(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/75287.html" target="_blank" title="妖神记第170话 放烟花(下) 2018-04-21">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第170话 放烟花(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/75069.html" target="_blank" title="妖神记第170话 放烟花(上) 2018-04-18">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第170话 放烟花(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/74990.html" target="_blank" title="妖神记第169话 爆爆爆炸!(下) 2018-04-14">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第169话 爆爆爆炸!(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/74810.html" target="_blank" title="妖神记第169话 爆爆爆炸!(上) 2018-04-11">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第169话 爆爆爆炸!(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/74601.html" target="_blank" title="妖神记第168话 烟火(下) 2018-04-07">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第168话 烟火(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/74503.html" target="_blank" title="妖神记第168话 烟火(上) 2018-04-04">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第168话 烟火(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/74338.html" target="_blank" title="妖神记第167话 铭文的秘密(下) 2018-03-31">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第167话 铭文的秘密(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/74275.html" target="_blank" title="妖神记第167话 铭文的秘密(上) 2018-03-28">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第167话 铭文的秘密(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/74147.html" target="_blank" title="妖神记第166话 飞刀(下) 2018-03-24">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第166话 飞刀(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/73930.html" target="_blank" title="妖神记第166话 飞刀(上) 2018-03-21">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第166话 飞刀(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/73767.html" target="_blank" title="妖神记第165话 黑炎剑(下) 2018-03-17">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第165话 黑炎剑(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/73663.html" target="_blank" title="妖神记第165话 黑炎剑(上) 2018-03-14">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第165话 黑炎剑(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/73548.html" target="_blank" title="妖神记第164话 市镇(下) 2018-03-10">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第164话 市镇(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/73402.html" target="_blank" title="妖神记第164话 市镇(上) 2018-03-07">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第164话 市镇(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/73311.html" target="_blank" title="妖神记第163话 黑龙怒焰(下) 2018-03-03">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第163话 黑龙怒焰(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/73154.html" target="_blank" title="妖神记第163话 黑龙怒焰(上) 2018-02-28">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第163话 黑龙怒焰(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/72926.html" target="_blank" title="妖神记第162话 碾压(下) 2018-02-21">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第162话 碾压(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/72887.html" target="_blank" title="妖神记第162话 碾压(上) 2018-02-19">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第162话 碾压(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/72800.html" target="_blank" title="妖神记第161话 惊人的肉体(下) 2018-02-14">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第161话 惊人的肉体(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/72609.html" target="_blank" title="妖神记第161话 惊人的肉体(上) 2018-02-09">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第161话 惊人的肉体(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/72533.html" target="_blank" title="妖神记第160话 启程(下) 2018-02-07">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第160话 启程(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/72463.html" target="_blank" title="妖神记第160话 启程(上) 2018-02-03">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第160话 启程(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/72295.html" target="_blank" title="妖神记第159话 准备妥当(下) 2018-01-31">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第159话 准备妥当(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/72171.html" target="_blank" title="妖神记第159话 准备妥当(上) 2018-01-27">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第159话 准备妥当(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/71948.html" target="_blank" title="妖神记第158话 矿场见闻(下) 2018-01-24">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第158话 矿场见闻(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/71814.html" target="_blank" title="妖神记第158话 矿场见闻(上) 2018-01-20">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第158话 矿场见闻(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/71639.html" target="_blank" title="妖神记第157话 封印解除(下) 2018-01-17">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第157话 封印解除(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/71544.html" target="_blank" title="妖神记第157话 封印解除(上) 2018-01-13">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第157话 封印解除(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/71403.html" target="_blank" title="妖神记第156话 黄金级(下) 2018-01-10">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第156话 黄金级(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/71311.html" target="_blank" title="妖神记第156话 黄金级(上) 2018-01-06">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第156话 黄金级(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/71165.html" target="_blank" title="妖神记第155话 段剑(下) 2018-01-03">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第155话 段剑(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/71102.html" target="_blank" title="妖神记第155话 段剑(上) 2017-12-30">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第155话 段剑(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/70932.html" target="_blank" title="妖神记第154话 宴请(下) 2017-12-27">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第154话 宴请(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/70826.html" target="_blank" title="妖神记第154话 宴请(上) 2017-12-23">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第154话 宴请(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/70694.html" target="_blank" title="妖神记第153话 银翼家族(下) 2017-12-20">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第153话 银翼家族(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/70666.html" target="_blank" title="妖神记第153话 银翼家族(上) 2017-12-16">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第153话 银翼家族(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/70481.html" target="_blank" title="妖神记第152话 山脚下的村落(下) 2017-12-13">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第152话 山脚下的村落(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/70390.html" target="_blank" title="妖神记第152话 山脚下的村落(上) 2017-12-10">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第152话 山脚下的村落(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/70263.html" target="_blank" title="妖神记第151话 十字箴言(下) 2017-12-06">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第151话 十字箴言(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/70200.html" target="_blank" title="妖神记第151话 十字箴言(上) 2017-12-02">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第151话 十字箴言(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/70067.html" target="_blank" title="妖神记第150话 赤鬼的秘密(下) 2017-11-29">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第150话 赤鬼的秘密(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/70014.html" target="_blank" title="妖神记第150话 赤鬼的秘密(上) 2017-11-25">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第150话 赤鬼的秘密(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/69812.html" target="_blank" title="妖神记第149话 继续前进(下) 2017-11-22">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第149话 继续前进(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/69751.html" target="_blank" title="妖神记第149话 继续前进(上) 2017-11-18">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第149话 继续前进(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/69620.html" target="_blank" title="妖神记第148话 舌头(下) 2017-11-15">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第148话 舌头(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/69517.html" target="_blank" title="妖神记第148话 舌头!(上) 2017-11-11">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第148话 舌头!(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/69402.html" target="_blank" title="妖神记第147话 好多赤鬼!(下) 2017-11-08">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第147话 好多赤鬼!(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/69376.html" target="_blank" title="妖神记第147话 好多赤鬼(上) 2017-11-04">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第147话 好多赤鬼(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/69229.html" target="_blank" title="妖神记第146话 万向空间法阵(下) 2017-11-01">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第146话 万向空间法阵(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/69150.html" target="_blank" title="妖神记第146话 万向空间法阵(上) 2017-10-28">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第146话 万向空间法阵(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/69010.html" target="_blank" title="妖神记第145话 学院树林……(下) 2017-10-25">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第145话 学院树林……(下)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/68891.html" target="_blank" title="妖神记第145话 学院树林……(上) 2017-10-21">
   <span class="list_con_tb">
   </span>
   <span class="list_con_zj">
    第145话 学院树林……(上)
   </span>
  </a>
 </li>
 <li>
  <a href="https://www.dmzj.com/view/yaoshenji/68892.html" target="_blank" title="妖神记第144话 圣灵学院的第一强者(下) 2017-10-21">
   <span class="list_con_tb">
   </span>
   <span class="lis
from bs4 import BeautifulSoup
from contextlib import closing
from tqdm import tqdm
import time
import os
import requests
import re


def ask_url(url):
    head = {    
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.47"
        # "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63"
    }
    try:
        r = requests.get(url, headers=head, timeout=30)
        r.raise_for_status
        r.encoding = 'utf-8'
        return r.text
    except:
        return ""


if __name__ == '__main__':
    # 获取动漫章节链接和章节名
    target_url = "https://www.dmzj.com/info/yaoshenji.html"
    html = ask_url(target_url)
    soup = BeautifulSoup(html, 'html.parser')

    list_con_li = soup.find('ul', class_="list_con_li")
    comic_list = list_con_li.find_all('a')
    chapter_names = []
    chapter_urls = []
    for comic in comic_list:
        name = comic.text
        href = comic.attrs['href']
        chapter_names.insert(0, name)
        chapter_urls.insert(0, href)
    
    
    # https://images.dmzj.com/img/chapterpic/3059/14237/14395217739069.jpg
    
    # 创建保存目录
    save_dir = "妖神记"
    # os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
    # https://www.runoob.com/python/os-listdir.html
    if save_dir not in os.listdir('./'):    
        os.mkdir(save_dir)

    # 下载漫画
    for i, url in enumerate(tqdm(chapter_urls)):
        download_header = {
            'Referer': url,
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.47'
        }
        name = chapter_names[i]
        # 去掉 '.'
        while '.' in name:
            name = name.replace('.', '')
        chapter_save_dir = os.path.join(save_dir, name)
        if name not in os.listdir(save_dir):
            os.mkdir(chapter_save_dir)
            html = ask_url(url)
            soup = BeautifulSoup(html, 'html.parser')
            script_info = soup.script
           
            pics = re.findall(r'\d{13,14}', str(script_info))   # !!!
            
            for j, pic in enumerate(pics):
                if len(pic) == 13:
                    pics[j] = pic +'0'
            # https://www.runoob.com/python/python-func-sorted.html
            pics = sorted(pics, key=lambda x:int(x))
            
            
            chapterpic_hou = re.findall('\|(\d{5})\|', str(script_info))[0]
            chapterpic_qian = re.findall('\|(\d{4})\|', str(script_info))[0]
            
            for idx, pic in enumerate(pics):
                if pic[-1] == '0':
                    url = "https://images.dmzj.com/img/chapterpic/" + chapterpic_qian + '/' + chapterpic_hou + '/' + pic[:-1] + ".jpg"
                else:
                    url = "https://images.dmzj.com/img/chapterpic/" + chapterpic_qian + '/' + chapterpic_hou + '/' + pic + ".jpg"
                # print(url)
            
                pic_name = "%03d.jpg" % (idx + 1)
                pic_save_path = os.path.join(chapter_save_dir, pic_name)
                with closing(requests.get(url, headers=download_header, stream=True)) as response:
                    chunk_size = 1024
                    content_size = int(response.headers['content-length'])
                    if response.status_code == 200:
                        with open(pic_save_path, 'wb') as file:
                            for data in response.iter_content(chunk_size=chunk_size):
                                file.write(data)
                    else:
                        print("链接异常")
            # https://www.runoob.com/python/att-time-sleep.html
            # time.sleep(10)
            '''
            import time
            print(time.ctime())     # Sun Dec  6 13:46:57 2020
            time.sleep(10)
            print(time.ctime())     # Sun Dec  6 13:47:07 2020
            '''
爬取结果截图:

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枯木何日可逢春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值