SBR是JOJO系列我最喜欢的一部,所以今天把漫画爬取到本地,日后慢慢看。

  1. import re
  2. import time
  3. import requests
  4. from requests import codes
  5. from bs4 import BeautifulSoup
  6. from requests import RequestException
  7.  
  8. def get_page(url):
  9. try:
  10. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36'
  11. + '(KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
  12. response = requests.get(url, headers=headers)
  13. if response.status_code == 200:
  14. return response.text
  15. return None
  16. except RequestException:
  17. return None
  18.  
  19. def get_pagesNumber(text):
  20. soup = BeautifulSoup(text, 'lxml')
  21. pagesNumber = soup.find(name='div', class_="d-none vg-r-data")
  22. return pagesNumber.attrs['data-total']
  23.  
  24. def parse_page(text):
  25. soup = BeautifulSoup(text, 'lxml')
  26. url = soup.find(name='img', class_="img-fluid show-pic")
  27. chapter = soup.find(name='h2', class_="h4 text-center")
  28. page = soup.find(name='span', class_="c_nav_page")
  29. yield {
  30. 'url': url['src'],
  31. 'chapter': chapter.get_text(),
  32. 'page': page.get_text()
  33. }
  34. #return 在返回结果后 结束函数的运行
  35. #而yield 则是让函数变成一个生成器,生成器每次产生一个值,函数被冻结,被唤醒后再产生一个值
  36.  
  37. def save_image(item):
  38. img_path = 'SBR' + os.path.sep + item.get('chapter') #os.path.sep是路径分隔符\
  39. if not os.path.exists(img_path):
  40. os.makedirs(img_path)
  41. try:
  42. resp = requests.get(item.get('url'))
  43. if codes.ok == resp.status_code:
  44. file_path = img_path + os.path.sep + '{file_name}.{file_suffix}'.format(
  45. file_name=item.get('page'), file_suffix='jpg')
  46. if not os.path.exists(file_path):
  47. with open(file_path, 'wb') as f:
  48. f.write(resp.content)
  49. print('Downloaded image path is %s' % file_path)
  50. else:
  51. print('Already Downloaded', file_path)
  52. except Exception as e:
  53. print(e)
  54.  
  55. if __name__ == '__main__':
  56. for chapter in range(292, 316): #观察可发现共24章节,292到315 彩漫13283, 13306
  57. url = 'https://www.manhuadb.com/manhua/147/4_'+str(chapter)+'.html'
  58. text = get_page(url)
  59. pagesNumber = get_pagesNumber(text) #获取当前章节总页数
  60. for page in range(1,int(pagesNumber)+1):
  61. url = 'https://www.manhuadb.com/manhua/147/4_'+str(chapter)+'_'+str(page)+'.html'
  62.        #彩漫#url = 'https://www.manhuadb.com/manhua/147/1330_'+str(chapter)+'_'+str(page)+'.html'
  63. text = get_page(url)
  64. for item in parse_page(text):
  65. save_image(item)

最后得到,

爬取漫画DB上的JoJo的奇妙冒险 第七部 飙马野郎的更多相关文章

  1. 爬取漫画DB上的《浪客行》

    漫画链接:https://www.manhuadb.com/manhua/324 建议:早上爬,速度较快. 天下无双宫本武藏 代码 # https://www.manhuadb.com/manhua/ ...

  2. python爬取漫画

    抓取漫画的网址是:sf互动传媒 抓取漫画的由来也是看了知乎上有人说用爬取漫画,然后自己也玩玩 首页中每个漫画的url是类似这样存储的: <tr> <td height="3 ...

  3. 【Python3 爬虫】14_爬取淘宝上的手机图片

    现在我们想要使用爬虫爬取淘宝上的手机图片,那么该如何爬取呢?该做些什么准备工作呢? 首先,我们需要分析网页,先看看网页有哪些规律 打开淘宝网站http://www.taobao.com/ 我们可以看到 ...

  4. 爬取拉钩网上所有的python职位

    # 2.爬取拉钩网上的所有python职位. from urllib import request,parse import json,random def user_agent(page): #浏览 ...

  5. 使用BeautifulSoup 爬取一个页面上的所有的超链接

    # !/usr/bin/python # -*-coding:utf-8-*- import urllib from bs4 import BeautifulSoup response = urlli ...

  6. Python 002- 爬虫爬取淘宝上耳机的信息

    参照:https://mp.weixin.qq.com/s/gwzym3Za-qQAiEnVP2eYjQ 一般看源码就可以解决问题啦 #-*- coding:utf-8 -*- import re i ...

  7. python3爬虫-爬取58同城上所有城市的租房信息

    from fake_useragent import UserAgent from lxml import etree import requests, os import time, re, dat ...

  8. Python爬取知乎上搞笑视频,一顿爆笑送给大家

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:Huangwei AI 来源:Python与机器学习之路 PS:如有需 ...

  9. 利用python3 爬取 网易云 上 周杰伦所有专辑,歌曲,评论,并完成可视化分析已经歌曲情绪化分析

    这篇文章适合于python爱好者,里面可能很多语句是冗长的,甚至可能有一些尚未发现的BUG,这个伴随着我们继续学习来慢慢消解吧.接下来 我把里面会用到的东西在这里做一个简单总结吧:本文用到了两门解释性 ...

随机推荐

  1. Android Studio 找不到夜神模拟器的解决办法

    Android Studio 找不到夜神模拟器的解决办法 1.启动夜神模拟器 2.找到你电脑上的夜神安装目录,在bin目录下打开cmd窗口,运行命令 nox_adb.exe connect 127.0 ...

  2. 迁移桌面程序到MS Store(14)——APPX嵌入WCF Service以Admin权限运行

    Windows10 1809版本开始,微软又对UWP开放了新的Capability:AllowElevation. 通过这个新的Capability,UWP APP能够在运行时向用户请求Admin权限 ...

  3. Linux运维--实践-Rally

    1.rally简介 OpenStack Rally 是一个自动化测试工具,社区希望通过 Rally 来解答 "How does OpenStack work at scale?(如何规模化运 ...

  4. [WPF 自定义控件]创建包含CheckBox的ListBoxItem

    1. 前言 Xceed wpftoolkit提供了一个CheckListBox,效果如下: 不过它用起来不怎么样,与其这样还不如参考UWP的ListView实现,而且动画效果也很好看: 它的样式如下: ...

  5. MySQL锁与事务隔离级别

    一.概述 1.锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除了传统的计算资源(如CPU.RAM.IO等)的争用以外,数据也是一种供需要用户共享的资源.如何保证数据并发访 ...

  6. leetcode面试题 02.06. 回文链表,解题心路

    目录 leetcode面试题 02.06. 回文链表,解题心路 1.题目描述 2.java语言题解一 3.java语言题解二 4.C语言题解一 leetcode面试题 02.06. 回文链表,解题心路 ...

  7. 错误:EfficientDet网络出现"No boxes to NMS"并且mAP:0.0的解决方案

    近日,在使用谷歌新推出来的一个网络EfficientDet进行目标检测训练自己的数据集的时候,出现了如下错误: 其中项目开源地址是:https://github.com/toandaominh1997 ...

  8. vuex的state在组件选项data和computed上引用的区别

    引用在vue组件的data选项,不因数值被改变而更新引在在vue组件的computed选项,因数值变化而更组件 案例代码如下,调整下引用vue和vuex地址即可展示 <!DOCTYPE html ...

  9. EasyUI表单验证插件扩展

    $.extend($.fn.validatebox.defaults.rules, { regex: { validator: function (value, param) { var regex ...

  10. Java 【Math】

    一.Math类的使用方法 public class demo{ public static void main(String[] args){ double pi = Math.PI; //Math函 ...