今天我们要爬取这个网站的《辉夜大小姐想让我告白》漫画(穷人靠科技,富人靠硬币,懂,不多说)
主要就两步:1.在主界面找到所有话的链接 2.在每一话找到该话的所有图片

需要源码的直接翻到最后

首先我们找到了每一话的链接

# 获取章节链接和章节名称
hrefs = re.findall('<li>\n.*?<a href="(.*?\.html)\"\n.*?class="">\n.*?<span>(.*?)</span>',r.text)
for href in hrefs:# 拼接章节链接chapter_url = 'http://www.90mh.com' + href[0]name = href[1]chapter_path = root_path + '\\' + nameprint(chapter_path)# 辉夜大小姐想让我告白\周刊13话

在进入其中一话,找到每一话的所有图片

# 获取章节图片chapter_imges = re.search('chapterImages = (\[.*?\])',chapter_page.text,re.S)chapter_src = re.search('chapterPath = "(.*?)"',chapter_page.text).group(1)
''' ...... '''
pic_url = 'https://js1.zzszs.com.cn/' + chapter_src + chapter_imges[i]

最终效果:

成功!

当然,不同网站结构不同,爬取方式也有些许不同。比如动漫之家——参考自这里.

但方式其实也就那么几种,还是可以摸索出来的,目前我爬了四五个网站,也都成功了,大家可以自己动手试试。

源码:
这里采用了多协程的方式,比正常方式快几十倍,但编写时麻烦些,并且存在有的网址访问超时的情况,故需要多跑几遍.这里我使用了代理,大家需要自己配置,并更改代理ip地址.

import requests
import re
import time
import os
from ast import literal_eval
import asyncio
import aiohttp
import aiofilesasync def get_image(session,href_url,name):# 拼接章节链接chapter_url = 'http://www.90mh.com' + href_urlchapter_path = root_path + '\\' + nameprint(chapter_path)# 建立章节文件夹if not os.path.exists(chapter_path):os.mkdir(chapter_path)try:async with session.get(chapter_url, headers=headers, proxy=proxy, timeout=30) as response:r = await response.text()except:async with session.get(chapter_url, headers=headers, proxy=proxy, timeout=30) as response:r = await response.text()# 获取章节图片chapter_imges = re.search('chapterImages = (\[.*?\])', r, re.S)chapter_src = re.search('chapterPath = "(.*?)"', r).group(1)chapter_imges = chapter_imges.group(1)# 将字符串形式的列表转为列表chapter_imges = literal_eval(chapter_imges)tasks = []for i in range(len(chapter_imges)):if i < 10:pic_path = chapter_path + '\\' + str(0) + str(i) + '.jpg'else:pic_path = chapter_path + '\\' + str(i) + '.jpg'print(pic_path)if not os.path.exists(pic_path):pic_url = 'https://js1.zzszs.com.cn/' + chapter_src + chapter_imges[i]tasks.append(get_photo(session,pic_url,pic_path))if tasks:await asyncio.wait(tasks)if hrefs:href = hrefs.pop()task = [asyncio.create_task(get_image(session, href[0], href[1]))]await asyncio.wait(task)async def get_photo(session,pic_url,pic_path):try:async with session.get(pic_url, headers=pic_headers, timeout=30) as p:pic = await p.content.read()except:async with session.get(pic_url, headers=pic_headers, timeout=50) as p:pic = await p.content.read()async with aiofiles.open(pic_path, 'wb') as f:await f.write(pic)group_size = 5
ip = '127.0.0.1:7890'
proxy = 'http://' + ip
proxies = {'http': 'http://' + ip,'https': 'https://' + ip
}
# 漫画主页
url = 'http://www.90mh.com/manhua/zongzhijiushifeichangkeai/'
host = 'www.90mh.com'
headers = {'Host': 'www.90mh.com','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
}
pic_headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
}
root_path = '总之就是非常可爱'async def main():# 建立根文件夹if not os.path.exists(root_path):os.mkdir(root_path)async with aiohttp.ClientSession() as session:try:async with session.get(url, headers=headers,proxy=proxy, timeout=30) as response:  #r = await response.text()except:async with session.get(url, headers=headers, proxy=proxy, timeout=50) as response:r = await response.text()# 获取章节链接和章节名称global hrefshrefs = re.findall('<li>\n.*?<a href="(.*?\.html)\"\n.*?class="">\n.*?<span>(.*?)</span>',r)tasks = []if len(hrefs) < group_size:num = len(hrefs)else:num = group_sizefor i in range(num):href = hrefs.pop()tasks.append(asyncio.create_task(get_image(session,href[0],href[1])))await asyncio.wait(tasks)if __name__ == '__main__':asyncio.run(main())

python漫画爬虫:我不做人了,b站!爬取辉夜大小姐等漫画相关推荐

  1. Python网络爬虫数据采集实战:同花顺动态网页爬取

    前文的爬虫都建立在静态网页基础之上,首先通过请求网站url获取到网页源代码.之后对源代码进行信息提取进而存储即可,本文则针对动态网页进行数据采集,首先介绍Ajax相关理论,之后实战爬取同花顺动态网页, ...

  2. yield python3 知乎_运维学python之爬虫高级篇(七)scrapy爬取知乎关注用户存入mongodb...

    首先,祝大家开工大吉! 本篇将要介绍的是从一个用户开始,通过抓关注列表和粉丝列表,实现用户的详细信息抓取并将抓取到的结果存储到 MongoDB. 1 环境需求 基础环境沿用之前的环境,只是增加了Mon ...

  3. 【Python网络爬虫实战篇】使用selenium+requests爬取下载高清源视频:关于爬取m3u8文件链接解析为ts视频合并成mp4视频的分析实战

    这两天博主在摸鱼时,偶然间接触到了流媒体的概念,一时间来了兴致.再加上之前博主有着七.八年的视频制作经验,深知视频素材获取的不易.因此,打算利用自己所学的python网络爬虫的知识,通过编写代码实现获 ...

  4. 利用python编写爬虫程序,从招聘网站上爬取数据,将数据存入到MongoDB数据库中,将存入的数据作一定的数据清洗后做数据分析,最后将分析的结果做数据可视化

    教程演示 创建爬虫项目 编写需要爬取的字段(items.py) 编写spider文件(wuyou.py) 编写数据库连接(pipelines.py) 编写反爬措施(settings.py) Mongo ...

  5. Python网络爬虫实战1:百度新闻数据爬取

    目录 一.  获取网页源代码 1.  四行代码获取(有时不灵) 2. 五行代码获取(常用方法) 二.分析网页源代码信息 方法1:F12方法 方法2:右击选择"查看网页源代码" 方法 ...

  6. Python开发爬虫之BeautifulSoup解析网页篇:爬取安居客网站上北京二手房数据

    目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称.价格.几室几厅.大小.建造年份.联系人.地址.标签等. 网址为:https://beijing.anjuke.com/sale/ B ...

  7. Python网络爬虫(四):selenium+chrome爬取美女图片

    说明: Python版本:Python IDE:PyCharm chrome版本:我的版本63 chromedriver.exe:因为是模拟浏览器访问,chrome需要再下载一个驱动,具体方式在我的上 ...

  8. 【Python】爬虫初体验,40行代码爬取双色球2003年至今的开奖号码

    爬虫爬取的双色球开奖号码 按我目前的理解,爬虫的工作原理大致是: 获取目标网页,在网页(html文件)中筛选目标数据,最后把数据导出 利用爬虫爬取数据看似很"高深莫测",只需几分钟 ...

  9. 利用Python网络爬虫实现对网易云音乐歌词爬取

    今天小编给大家分享网易云音乐歌词爬取方法. 本文的总体思路如下: 找到正确的URL,获取源码: 利用bs4解析源码,获取歌曲名和歌曲ID: 调用网易云歌曲API,获取歌词: 将歌词写入文件,并存入本地 ...

最新文章

  1. 汇编程序设计与计算机体系结构软件工程师教程笔记:处理器、寄存器简介
  2. 使用Ceph集群作为Kubernetes的动态分配持久化存储
  3. python里面的之前打过的记忆信息-python 中 __init__方法
  4. 留存方法论:如何培养用户使用习惯?
  5. CC1310在868MHz的电路设计
  6. unc 隐藏共享文件夹_你真的了解任务栏吗?win10任务栏居然隐藏了这么多小窍门...
  7. C++工作笔记-getter/setter方法中大佬的风格
  8. javascript第三节
  9. #centos7 创建内网yum源 OpenStack源部署
  10. 优盘(U 盘) 采用TLC, MLC, SLC芯片 的区别 与使用寿命
  11. 设计一个Triangle类继承自GeometricObject类
  12. 黑桃spade,红桃heart,方片diamond,梅花club
  13. Sematic Web 学习笔记---现代逻辑导论
  14. 小猫爪:动手笔记01-FreeRTOS移植
  15. Android 官方现代 App 架构指南
  16. 吉首大学校赛 K 白山茶与红玫瑰 (线段树区间操作)
  17. docker中容器与容器之间通讯
  18. C波段、KU波段与雨衰现象
  19. 大型电商网站:第一章:主要电商模式
  20. Envoy代理GRPC服务支持通过restful进行访问

热门文章

  1. DirectX12(D3D12)基础教程(四)——初识DirectXMath库、使用独立堆创建常量缓冲、理解管线状态对象、理解围栏同步
  2. 【文献心得】内存隔离技术研究现状调研
  3. [计算机网络]交换机环路问题
  4. dw实时视图与网页不一样_视图窗口和oc实时预览内容显示范围不一样,不完全同步。...
  5. 云计算赛项-私有云skywalking服务部署与应用
  6. oracle 表分区
  7. 最新-安装Windows与Ubuntu双系统
  8. New Bing新必应内测资格申请教程,无需科学上网,一分钟搞定!
  9. 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现?
  10. Hive远程连接设置用户名和密码