动漫之家《妖神记》爬虫

目标:动漫之家《妖神记》爬虫,听课习作

目标网址:https://www.dmzj.com/info/yaoshenji.html

主要知识

——自动判断、创建所需目录

——切片知识

——bs4解析库使用技巧

——网址拼接技巧

——初级防爬Referer

——爬取结果反向排序

——图片文件保存

——正则使用

——html.script

程序中有详细步骤、解释


```python
'''
-*- coding: utf-8 -*-
@Author  : hshcompass
@QQ      : 46215528
@Time    : 2021/1/9 14:38
@Software: PyCharm
@File    : 妖神记.py
'''
# 爬取动漫之家----Yaoshenji# 导入库
import re, os, time, requests
from bs4 import BeautifulSoup# 保存目录
save_dir = '妖神记'
if save_dir not in os.listdir('./'):os.mkdir(save_dir)# 1 获取所有章节名称和章节链接# 目标网址
url ='https://www.dmzj.com/info/yaoshenji.html'# 发送请求,获取响应
response =requests.get(url)# 提取数据,解析网页
soup = BeautifulSoup(response.text, 'lxml')# 图片位于 ul 标签 下的 li 标签,具体链接是 a 标签
list_con_li = soup.find('ul', class_="list_con_li autoHeight")
cartoon_list = list_con_li.find_all('a')# 章节名称、链接
charpter_names = []
charpter_urls  = []for cartoon in cartoon_list:href = cartoon.get('href')name = cartoon.textcharpter_names.insert(0,name)    # 没有使用 append 是因为章节是倒序排列,所以用 insertcharpter_urls.insert(0,href)# 2 根据每个章节链接获取所有图片链接
for i, url in enumerate(charpter_urls):"""返回章节目录列表的索引位置"""name = charpter_names[i]# 为每一章节创建目录# 避免创建文件夹报错 把 . 去掉while '.' in name:name = name.replace('.', '')# 创建章节目录charpter_save_dir = os.path.join(save_dir, name)if name not in os.listdir(save_dir):os.mkdir(charpter_save_dir)response = requests.get(url)html = BeautifulSoup(response.text, 'lxml')# 获取script 标签里的内容script_info = html.script# 找长度为 13 或 14 的数字,取出来并 转为 str 字符串pics = re.findall('\|(\d{13,14})\|', str(script_info))# print(pics)# 遍历取出来的数字for j, pic in enumerate(pics):# 有的是 13 有的是 14 ,对 13 位的数字末位补 0if len(pics) == 13:pics[j] = pic + '0'# 图片排序pics = sorted(pics, key=lambda x:int(x))charpter_hou = re.findall('\|(\d{5})\|', str(script_info))[0]charpter_qian = re.findall('\|(\d{4})\|', str(script_info))[0]headers = {'Referer': url,  # 初级反爬'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}# 拼接链接网址for idx, pic in enumerate(pics):# 如果最后一位数字是 0if pic[:-1] == '0':# 【:-1】 表示切片时不要最后一位,取到最后一位前面url = 'https://images.dmzj.com/img/chapterpic/' + charpter_qian + '/' + charpter_hou + '/' + pic[:-1] + '.jpg'else:url = 'https://images.dmzj.com/img/chapterpic/' + charpter_qian + '/' + charpter_hou + '/' + pic + '.jpg'print(url)# 保存图片名和图片保存图片路径pic_name =  '%03d.jpg' %(idx +1)  # 001-002-003.....199  避免图片数量超过设置,扩大一些pic_save_path = os.path.join(charpter_save_dir, pic_name)# 发送请求,下载图片resp = requests.get(url, headers = headers)# 如果状态码 正常 200,保存图片文件if resp.status_code == 200:with open(pic_save_path, 'wb') as f:f.write(resp.content)else:print('链接异常')
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210109191008945.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDExODcxNA==,size_16,color_FFFFFF,t_70)

动漫之家《妖神记》爬虫(2021-01-09)相关推荐

  1. 怎么在电脑上玩妖神记手游 妖神记安卓模拟器玩法教程

    妖神记是腾讯打造的首款二次元国风手游,融合了浓浓的东方玄幻元素,高度还原的<妖神记>小说中的场景,令人热血沸腾.下面小编就给亲们介绍下怎么在电脑上玩妖神记手游,一起来感受下异彩纷呈的妖神世 ...

  2. 妖神记服务器维护中,妖神记手游进不去 进不去网络异常怎么办?[多图]

    类型:角色扮演 大小:901.88MB 评分:10 平台: 妖神记手游最近有不少玩家反映进不去游戏,还有时候会碰到网络异常,这时候要怎么解决呢?下面是友情MT为大家带来的妖神记手游进不去网络异常解决方 ...

  3. 妖神记自建服务器,妖神记 - 服务退换中心 - 腾讯游戏

    各位妖灵师大人: 自从 <妖神记>正式在中国启动测试至今,转眼间已经度过1年半的时间.在这段时间里,我们与众多玩家一起度过了难忘的日日夜夜.在<妖神记>的世界里,各位妖灵师大人 ...

  4. 妖神记服务器维护中,《妖神记》嘉月测试进行时 诚意征求玩家反馈

    原标题:<妖神记>嘉月测试进行时 诚意征求玩家反馈 由腾讯极光计划精心打造的二次元国风手游<妖神记>"嘉月测试"正在火爆进行中.如今,御者.死士.刺客.咒术 ...

  5. 龙墟界域 鸿蒙界域,妖神记妖神记这个等级划分全面 看漫画

    修炼的层次分类: 妖灵师和武者都有11个等级,分别是青铜.白银.黄金.黑金.传奇.次神.天命.天星.天转.龙道.武宗11个级别 小玲珑世界层次:青铜.白银.黄金.黑金.传奇,每个级别又分五个星级. 龙 ...

  6. java爬虫 爬取动漫之家10000部漫画信息

    Java大作业,爬取信息并写入Excel. 项目下载:https://pan.baidu.com/s/1Z1rMWSyaAeGvZCm5CMgexQ(请用eclipse 2018打开,我的jdk版本是 ...

  7. selenium 定位li_动漫之家selenium懒爬虫

    本人是一个漫画迷,也是一个爬虫新手,由于很不喜欢动漫之家的阅览体验,进而有了这一次的动漫之家漫画下载的小项目,也是由于懒惰的原因选择了selenium来爬取动态页面. 首先: 选择想要爬取的漫画,这里 ...

  8. 动漫的python语言代码_由Python编写的全异步实现的动漫之家(dmzj)漫画批量下载器(爬虫)...

    DCDownloader 专注于漫画网站.图站等类似形式的内容站点的批量下载器框架. 说明 这个项目最开始是作者编写的一个仅支持某个漫画网站的批量下载器,后来有人提建议说有增加网站的需求,作者便重新梳 ...

  9. Python爬取分析动漫之家订阅量最多的漫画的标签

    最近学到了网页爬虫,在打开动漫之家的时候突然想爬一下动漫之家被订阅最多的漫画的标签,看看大家都喜欢看什么漫画 代码如下 import requests import redef input_info( ...

最新文章

  1. Redis Streams 介绍
  2. mmap原理及流程(kernel 4.1版本)
  3. jdbc查看网络状态
  4. 周末想找个地方敲代码_观看我们的代码游戏,全周末直播
  5. 抗击肺炎,中国互联网公司在行动
  6. Android开发笔记(十五)淡入淡出动画TransitionDrawable
  7. 使用Angular与TypeScript构建Electron应用(二)
  8. 几种RIA技术(富互联网应用程序)比较
  9. 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore.nativeNewInstance
  10. 【日常】《中国统计年鉴》与《中国金融年鉴》数据表爬虫(附1985-2020所有Excel资源)
  11. Mac OS 使用asio库
  12. quartz定时任务集群版
  13. 微信小程序开发全流程记录(从前台到后台,到发布)
  14. 解决百度网盘下载慢,提速下载
  15. python解析mht文件_[原创].mht文件图片解析工具
  16. Suspending Methods【暂停方法队列说明】
  17. h5直播|微直播weLiveShow|视频h5|video直播
  18. java jnlp 签名_JNLP(jar包签名)
  19. 史上最全网络安全面试题合集
  20. 区间dp(含模板及例题)

热门文章

  1. 对抗生成网络(GAN)学习笔记
  2. PTA练习题错题归纳
  3. 体温多高算发烧?4 种体温计各不同,一张图教你正确判断
  4. 一个5年程序员的反思-亡羊补牢,为时不晚!
  5. 【JavaSE】异常 超详讲解(编程思想)
  6. 前端原生javaScript,通过身份证号判断年龄、性别、出生日期。
  7. 马里奥制造,Ready~~GO!「GitHub 热点速览 v.22.16」
  8. PyMol - script
  9. 注册德国商标条件和程序材料注意事项
  10. linux车机软件市场,车机UI(用户界面)的发展现状