教你如何利用python3爬虫爬取漫画岛-非人哉漫画
作者:空谷回音。 发布时间:2021-10-01 23:06:57
最近学了一点点python爬虫的知识,面向百度编程爬了一本小说之后感觉有点不满足,于是突发奇想尝试爬一本漫画下来看看。
一、效果展示
首先是我们想要爬取的漫画网页:http://www.manhuadao.cn/
网页截图:
其次是爬取下来的效果:
每一回的文件夹里面是这样的: (因为网站图片的问题...所以就成了这个鬼样子)
二、分析原理
1、准备:需要vscode或者其他能够编译运行python的软件,推荐python版本3.X ,否则有可能出现编译问题。
下载所需模块:win+R进入命令行,输入pipinstall <模块名>即可下载。例如:
pip install beautifulsoup4
2、原理: 模拟浏览器点击->打开漫画网页链接->获取网页源码->定位每一章漫画的链接->模拟点击->获取图片页面源码->定位图片链接->下载图片
三、实际操作(代码附在最后)
1、引入模块 (这里不再详述)
2、模拟浏览器访问网页
(1)、这里我们打开漫画的目录页,如下: url = ”http://www.manhuadao.cn/Home/ComicDetail?id=58ddb07827a7c1392c234628“ ,此链接就是目录页链接。
(2)、按F12打开此网页的源码(谷歌浏览器),选中上方NetWork,Ctrl+R刷新。
(3)、找到加载网页的源码文件,点击Headers,如下图: StatusCode表示网页返回的代码,值为200时表示访问成功。
(4)、headers中的参数为下面红框User-Agent。
response = requests.get(url=url, headers=headers) # 模拟访问网页
print(response) # 此处应输出 <Response [200]>
print(response.text) # 输出网页源码
两个输出分别输出:
输出返回200表示访问成功。
(5)、将html代码存入 data 中,xpath定位每一章链接。点击上方Element,点击:
将鼠标移至目录处:
右边代码区域出现每一章链接:
data = etree.HTML(response.text)
# tp = data.xpath('//ul[@class="read-chapter"]/li/a[@class="active"]/@href')
tp = data.xpath('//*[@class="yesReader"]/@href')
zhang_list = tp # tp为链接列表
输出zhang_list,结果如下:
(6)、获取图片链接(获取方式同上一步)
点进第一章,同上一步,寻找到图片链接:
i=1
for next_zhang in zhang_list: # 在章节列表中循环
i=i+1
j=0
hui_url = r_url+next_zhang
name1 = "第"+str(i)+"回"
file = 'C:/Users/wangyueke/Desktop/'+keyword+'/{}/'.format(name1) # 创建文件夹
if not os.path.exists(file):
os.makedirs(file)
print('创建文件夹:', file)
response = requests.get(url=hui_url, headers=headers) # 模拟访问每一章链接
data = etree.HTML(response.text)
# tp = data.xpath('//div[@class="no-pic"]//img/@src')
tp = data.xpath('//div[@class="main-content"]//ul//li//div[@class="no-pic"]//img/@src') # 定位
ye_list = tp
(7)、下载图片
for k in ye_list: # 在每一章的图片链接列表中循环
download_url = tp[j]
print(download_url)
j=j+1
file_name="第"+str(j)+"页"
response = requests.get(url=download_url) # 模拟访问图片链接
with open(file+file_name+".jpg","wb") as f:
f.write(response.content)
五、代码
'''
用于爬取非人哉漫画
目标网址:http://www.manhuadao.cn/
开始时间:2019/8/14 20:01:26
完成时间:2019/8/15 11:04:56
作者:kong_gu
'''
import requests
import json
import time
import os
from lxml import etree
from bs4 import BeautifulSoup
def main():
keyword="非人哉"
file = 'E:/{}'.format(keyword)
if not os.path.exists(file):
os.mkdir(file)
print('创建文件夹:',file)
r_url="http://www.manhuadao.cn/"
url = "http://www.manhuadao.cn/Home/ComicDetail?id=58ddb07827a7c1392c234628"
headers = { # 模拟浏览器访问网页
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \\Chrome/75.0.3770.142 Safari/537.36'}
response = requests.get(url=url, headers=headers)
# print(response.text) # 输出网页源码
data = etree.HTML(response.text)
# tp = data.xpath('//ul[@class="read-chapter"]/li/a[@class="active"]/@href')
tp = data.xpath('//*[@class="yesReader"]/@href')
zhang_list = tp
i=1
for next_zhang in zhang_list:
i=i+1
j=0
hui_url = r_url+next_zhang
name1 = "第"+str(i)+"回"
file = 'C:/Users/wangyueke/Desktop/'+keyword+'/{}/'.format(name1) # 这里需要自己设置路径
if not os.path.exists(file):
os.makedirs(file)
print('创建文件夹:', file)
response = requests.get(url=hui_url, headers=headers)
data = etree.HTML(response.text)
# tp = data.xpath('//div[@class="no-pic"]//img/@src')
tp = data.xpath('//div[@class="main-content"]//ul//li//div[@class="no-pic"]//img/@src')
ye_list = tp
for k in ye_list:
download_url = tp[j]
print(download_url)
j=j+1
file_name="第"+str(j)+"页"
response = requests.get(url=download_url)
with open(file+file_name+".jpg","wb") as f:
f.write(response.content)
if __name__ == '__main__':
main()
来源:https://www.cnblogs.com/kong-gu/p/11360308.html
猜你喜欢
- 默认情况下,IIS 使用端口 80 进行 HTTP 通信。如果除 IIS 以外的某个应用程序正在运行并在使用相同 IP 地址的端口 80,当
- 一. adb 相关命令:1. 关闭adb服务:adb kill-server2. 启动adb服务 adb start
- 下面列出了asp远程网页数据采集程序中经常用到的函数,很实用,特别是正则表达式过滤函数。包括了使用xmlhttp采集远程网页内容,使用ado
- 从小的方面讲,帮助一般是指:手册、说明书、文档、FAQ 等等。从大的方面讲,可以是交互过程中的提示、指引、演示等信息,帮助无处不在!这一切,
- 数据挖掘的过程中,数据进行处理是一重要的环节,我们往往会将其封装成一个方法,而有的时候这一个方法可能会被反复调用,每一次都对数据进行处理这将
- 与前面一样我们会用fso来对文件或文件夹进行创建与删除操作了,其实fso有强大的功能但非常危险的哦,下面我们不来看看删除实例吧,在这些例子,
- 1. 错误描述之前在学习Python的过程中,导入自己写的包文件时,与之相关的方法等都会被划红线,但并不影响代码执行,如图:看着红线确实有点
- 无意中看到一段用Tkinter库写的放烟花的程序,就跟着跑了一遍。设计理念:通过让画面上一个粒子分裂为X数量的粒子来模拟 * 效果。粒子会发生
- 静态方法:将下面的代码复制到<body>~</body>内 程序代码 <table cellpadd
- 当你用 ASP 编写服务器端应用程序时,必须依靠 ActiveX
- Mac系统上虽然自带PHP和Apache,但是有时不是我们想要的版本呢。今天我们就在macOS Sierra(10.12.1)上安装比较新的
- 异常是指因为程序出现了错误而在正常控制流以外采取的行动,其分为两个阶段,第一阶段是引发异常的错误,当系统检测到错误并且意识到异常条件,解释器
- 使用SQL语句生成带有小计合计的数据集:测试用户: scott测试用表: dept,emp/////////////////////////
- ASPJPEG组件是Persits出品的共享软件,试用期为30天,您可以在这里下载:http://www.persits.com/aspjp
- 以前我就是一篇博文 就给出一个好用的函数,它在我几篇博文中被广泛运用的。最近看了不少东西,于是便有了这篇博文,以梳理我学到的新东西。毫无疑问
- 众所周知IE6不支持position:fixed,这个bug与IE6的双倍margin和不支持PNG透明等bug一样臭名昭著。前些天我做自己
- 在mysql网站时拿到的rpm包只能用root安装,不支持relocate用源码安装后./configure --prefix=/home/
- 从信息组织角度来看,段落内行之间的关系要比段落之间的关系低一个级别,所以在呈现上段落之间的“段距”应该大于段落之内的“行距”,如此才能一目了
- 系统环境centos7python2.7先在操作系统安装expect[root@V71 python]# vi 3s.py#!/usr/bi
- Tools -> Build System -> Build New System{ "cmd": [&qu