趣味学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:])

最后

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值