趣味学python(018)

python——爬取漫画

今天小编也是学习了爬取漫画的代码,特来分享一下。

需要导入的库:

from lxml import etree
import requests
from PIL import Image
from io import BytesIO

如果要操作二进制数据,就需要使用BytesIO。 BytesIO实现了在内存中读写bytes
其他的就不多说了。

我选取的网址:https://www.manhuatai.com/doupocangqiong/

为斗破苍穹

打开开发者工具(我用的谷歌),发现如图所示在这里插入图片描述

出现了 x-requested-with: XMLHttpRequest,表明有渲染过程,Ajax请求,不能直接通过访问网址的html数据拿到我们想要的东西。

我们直接 进入第一话,查看源码:

在这里插入图片描述

经过对网址的多次试探后,发现出现 //mhpic.manhualang.com/comic/D/斗破苍穹拆分版/1话/2.jpg-mht.middle.webp 格式时,可以访问到完整的图片(我们想要的?????)

而且观察 network中 并未找到 相关的链接,所以我们采用 直接构造网址的方法,
去拿到数据。

爬取漫画 Ajax请求 不能直接爬取 采用直接构造网址
‘’’
//mhpic.cnmanhua.com/comic/D/斗破苍穹拆分版/3话/1.jpg-300x150.jpg
//mhpic.manhualang.com/comic/D/斗破苍穹拆分版/1话/2.jpg-mht.middle.webp

‘’’

源码:

from lxml import etree
import requests
from PIL import Image
from io import BytesIO

#爬取漫画 Ajax请求 不能直接爬取 采用直接构造网址
‘’’
//mhpic.cnmanhua.com/comic/D/斗破苍穹拆分版/3话/1.jpg-300x150.jpg
//mhpic.manhualang.com/comic/D/斗破苍穹拆分版/1话/2.jpg-mht.middle.webp

‘’’

url = ‘https://www.manhuatai.com/doupocangqiong/
#构造请求头
headers = {
‘user-agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/76.0.3809.100 Safari/537.36’
}

#1 获得数据
response = requests.get(url, headers=headers)
html = response.text
#整理成文档对象
html = etree.HTML(html)
lias = html.xpath(’//ol[@id=“j_chapter_list”]/li/a/div/img/@data-src’)

imgs = []
index1 = 1
for lia in lias:
# print(lia)
if index1 > 3:
break
index1 += 1
li = lia.replace(‘cnmanhua’, ‘manhualang’)
# print(li)
li = li.rstrip(‘jpg-300x150.jpg’)
‘’’
我们发现 最后的数字也去除了,
//mhpic.manhualang.com/comic/D/斗破苍穹拆分版/1话/

>#
print(li)   接下来 构造请求网址
index = 1
while True:
    # 开始循环遍历网址 下载数据
    url = 'https:' + li + str(index) + '.jpg-mht.middle.webp'
    res = requests.get(url, headers=headers)
    # 判断是否为图片
    if res.content.startswith(b"<?xml"):
        break
    # 如果要操作二进制数据,就需要使用BytesIO。
    # BytesIO实现了在内存中读写bytes
    im = Image.open(BytesIO(res.content))
    imgs.append(im)
    print('正在保存:' + url)
    index += 1

imgs[0].save(‘斗破苍穹.pdf’, save_all=True, append_images=imgs[1:])

最后

在这里插入图片描述

发布了23 篇原创文章 · 获赞 0 · 访问量 385
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览