项目名: crawl_chuanwu

爬取链接:https://www.manhuadui.com/manhua/chuanwu/

声明:本项目无任何盈利目的,仅供学习使用,也不会对网站运行造成负担。
1. 打开链接后,我们会看到这样的图片

3. 每个章节都是一个link,我们需要获得这些链接,直接右击检查网页源代码,我们能找到每个章节的url,很幸运,这个不是动态网页(ajax:异步 JavaScript 和 XML,一种用于创建快速动态网页的技术),所以可以用request+pyquery直接进行爬取。代码部分getDir.py
import requests
from pyquery import PyQuery as pq
import pickledef get_html(url, code="utf-8"):try:headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ""(KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"}r = requests.get(url, headers=headers)r.raise_for_status()r.encoding = codereturn r.textexcept:return ""def get_dir(html):doc = pq(html)dirs = doc("div #chapter-list-1 a")print((type(dirs.items())))lst = []for dir in dirs.items():lst.append(dir.attr('href'))with open("dir_lst.pickle", "wb") as f:pickle.dump(lst, f)f.close()def main():url = "https://www.manhuadui.com/manhua/chuanwu/"html = get_html(url)get_dir(html)if __name__ == "__main__":main()
我将下载下来的url通过pickle技术进行文件保存,保存目录为dir_lst.pickle,为后面下载漫画使用接下来就是直接下载漫画了,首先进入第一话,同样进行右击查看网页源代码,发现找不着漫画图片的url,这时,我们对漫画图片进行右击,检查,很容易发现图片的url,为啥网页源代码没有呢,原因就是这里采用了ajax技术,作为一个新手,我一时难以下手,后来网上查了一下,发现selenium可以解决这种问题。

selenium是什么呢?
Selenium是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中,
就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。
这个工具的主要功能包括:测试与浏览器的兼容性、测试系统功能,
它是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。详细代码的使用方法可以看相应官网或其他大神博客。

以下是爬取前三章漫画的代码 crawl_comic.py
from pyquery import PyQuery as pq
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.wait import WebDriverWait
import requests
import re
import pickle
import os"""
本例说明,这是一个爬取漫画堆里的一部叫做传武的漫画,因为selenium模仿浏览器,爬取速度很慢,
所以我只爬取了前3话,依旧很慢,所以仅供初学者进行参考
"""# 该方法是得到每一话漫画的页数,并返回
def get_page_num(url, driver):driver.get(url)try:WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CLASS_NAME, "img_info")))except TimeoutException:print(u'加载页面失败')html = driver.page_sourcedoc = pq(html)page_num = doc("#images .img_info").text()[-3:-1]return page_num# 用yield生成器得到一个章节漫画图片的url
def pic_urls(page_num, url, driver):for i in range(1, int(page_num)+1):new_url = url+"?p="+str(i)driver.get(new_url)try:WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CLASS_NAME, "img_info")))except TimeoutException:print(u'加载页面失败')html = driver.page_sourcedoc = pq(html)photo_url = doc("#images img ").attr('src')yield photo_url# 对每一章节所有漫画图片的url进行爬取并保存在文件中
def download_photos(url, driver):# url = "https://www.manhuadui.com/manhua/chuanwu/224176.html"headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ""(KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"}page_num = get_page_num(url, driver)chapter = re.findall(r"\d{6}", url)[0]chapter = int(chapter) - 224175i = 1for pic_url in pic_urls(page_num, url, driver):if not os.path.exists("传武/第{0}话/".format(chapter)):os.makedirs("传武/第{0}话/".format(chapter))with open("传武/第{0}话/{1}.jpg".format(chapter, i), "wb") as f:print("\r正在下载传武/第{0}话/{1}.jpg".format(chapter, i), end="")i += 1content = requests.get(pic_url, headers=headers).contentf.write(content)f.close()# 主函数,前面的方法是爬取一个章节的所有漫画,在这里我们通过更改url得到其它章节的漫画
# 由于这里是顺序结构,爬取速度相对较慢,底子好的人可以用异步方式进行爬取
def main():driver = webdriver.Chrome()with open("dir_lst.pickle", "rb") as f:lst = pickle.load(f)# 截取前三章节的urldir = lst[0:3]url_a = "https://www.manhuadui.com"for _ in dir:url = url_a + _download_photos(url, driver)if __name__ == "__main__":main()

成果:

python爬虫爬取漫画(仅供学习)相关推荐

  1. pyhon3爬虫爬取小说(仅供学习使用。爬虫项目小实践)

    此代码实现了通过输入作者名查找小说,列出相似作者的小说,通过用户自行选择小说名下载,亦实现了通过输入小说名字查找小说.相关代码已上传至github:https://github.com/qazhw/p ...

  2. Python selenium Boss直聘数据爬取(仅供学习使用)

    写在前面,因为最近刚好需要分析行业数据,又在查询时,发现了许多博主写了一些东西,但很多都已经失效了,所以写了那么一篇文章,希望能够帮到大家 注:BOSS直聘数据为js加载数据,故使用selenium ...

  3. Python爬虫---爬取腾讯动漫全站漫画

    Python爬虫---爬取腾讯动漫全站漫画 操作环境 网页分析 明确目标 提取漫画地址 提取漫画章节地址 提取漫画图片 编写代码 导入需要的模块 获取漫画地址 提取漫画的内容页 提取章节名 获取漫画源 ...

  4. Python爬虫-爬取快看漫画网图片并拼接成漫画长图

    Python爬虫-爬取快看漫画网图片并拼接成漫画长图 1.爬取图片 2.拼接图片 1.爬取图片 import os import requests from bs4 import BeautifulS ...

  5. Python爬虫爬取微信朋友圈的方法,感兴趣的朋友可以了解下

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 小雨 | 作者 python教程 | 来源 接下来,我们将实现微信朋友圈的 ...

  6. python 爬虫爬取统计局北京统计数据

    python 爬虫爬取统计局统计数据 写在前面 主要因为朋友写论文,要爬取北京的经济数据.拜托我写一个爬虫爬取数据.爬取的都是公开的数据,代码仅供学习使用,切勿用作非法. http://tjj.bei ...

  7. 用Python爬虫爬取自己要的文章

    用Python爬虫爬取自己要的文章 在CSDN上有很多精彩的技术博客文章,我们可以把它爬取下来,保存在本地磁盘,可以很方便以后阅读和学习,现在我们就用python编写一段爬虫代码,来实现这个目的. 我 ...

  8. Python爬虫 | 爬取高质量小姐姐照片

    Python爬虫 | 爬取高质量小姐姐照片 1.数据来源分析 2.获取author_id_list和img_id 3.制作detial 4.制作detial_list 5.数据保存 6.批量获取 7. ...

  9. python爬虫代码实例-Python爬虫爬取百度搜索内容代码实例

    这篇文章主要介绍了Python爬虫爬取百度搜索内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 搜索引擎用的很频繁,现在利用Python爬 ...

最新文章

  1. python 语言, 详解fromstring 函数 -------------从字符串到Ascii 码的转换
  2. [转载]宇宙文明等级的划分标准
  3. 2023年考研之路或将更难
  4. 计算机指令系统课件,计算机组成原理课件05指令系统.ppt
  5. poj 2398 Toy Storage (计算几何,判断点和线段关系)
  6. Error和Exception(异常)
  7. 推荐系统遇上深度学习(四)--多值离散特征的embedding解决方案
  8. 华为linux配置ip地址命令是什么,华为S5700基础配置命令
  9. es6 日期字符串转日期_Pandas核心能力9:日期时间转换、提取、筛选
  10. sql server 运维时CPU,内存,操作系统等信息查询(用sql语句)
  11. E - Alignment
  12. linux 实验 广技师 进程管理与系统监视,实验9 linux进程管理与系统监视.doc
  13. 4.1 手工编写第一个Jmeter性能测试脚本
  14. 计算机管理找不到防火墙,电脑没有防火墙怎么办
  15. css去掉按钮默认样式教程_50个针对设计师CSS3按钮教程
  16. BUAA(2021春)大作业—— 文本摘要生成(数组字典树+快排=0.087s)
  17. 小目标 | Power BI新人快速上手手册
  18. 三星3405fW黑白激光无线打印机-WiFi打印
  19. HTML5七夕情人节表白网页_圣诞节3d相册(含音乐)_HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码
  20. linux GPRS模块拨号上网

热门文章

  1. pcf85263 linux驱动源码,PCF85263AT/AJ
  2. 牛客小白月赛24J--多项式取模
  3. 分布式之数据库和缓存双写一致性方案解析
  4. Axure8.0基础教程 一
  5. hssfrow 单元格样式_POI设置Excel单元格样式
  6. 若依框架使用自带的方法进行图片上传
  7. 在UNIX \ Linux终端中的可视化磁盘空间和磁盘使用情况小工具 - Vizex
  8. C语言-小黄鸭☞循环结构while
  9. 对3800x初步超频总结
  10. 北航计算机学院硕士培养方案,北航硕士研究生培养方案.doc