鱼C论坛

 找回密码
 立即注册
查看: 3237|回复: 12

[已解决]python爬虫:怎么对付懒加载的图片

[复制链接]
发表于 2021-12-5 12:41:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我有个朋友让我帮它爬个网站的图片。是的,是我朋友让我帮忙的。

我在分析网站图片src时发现这网站图片时懒加载的
捕获1.PNG
图上荧光笔的src时图片加载出来后的真src,但是下面蓝线的src时假的
图片的真src是特别长的一串,放txt里都有这么多。直接将这串特别长的代码复制到url可以的到图片。
捕获2.PNG
而假src="https://3js.cheqiao.cc/3/assets/images/default/loading/248x355.jpg"

分析标签,本以为真src会在data-original里,从多张图的data-original规律来看也也对的上
<img class="videopic lazy" data-aes="true" src="https://3js.cheqiao.cc/3/assets/images/default/loading/248x355.jpg" data-original="https://quanxiaoduo.net//tp/girl/lulutu/TuiGirl/A_572/11.jpg.txt" title="推女郎第1162期11">
 data-original="https://quanxiaoduo.net//tp/girl/lulutu/TuiGirl/A_572/11.jpg.txt" 
在抓包的时候,发现在加载图片的时候,url为data-original的请求包,
捕获3.PNG
如果猜的没错的话,图片的真sre应该是向data_original发起请求获取的吧。

但是在查看这些包的响应时我懵逼了,无论我是将data_original复制到url,还是通过requests.get(data_original),得到的都是图片里圈出来的内容
并不是上面真src样式,将的到的这串代码复制下来没法直接使用。
捕获4.PNG

这真的sre,和向data_original发起请求的到的代码有什么关系?是需要解码?还是需要什么别的技术?请大神帮忙看看


我代码我就在直接取在网页下载图片那段了。
import requests
from lxml import etree
from fake_useragent import UserAgent
import random
import re
import os

url = 'https://www.86chk.com'

ua = UserAgent(verify_ssl=False)
headers = {'User-Agent':ua.random}

def get_html(url):
    res = requests.get(url=url,headers=headers)
    res.encoding = 'UTF-8'
    html = res.text
    return html

def get_img(img_url):
    img_html = get_html(img_url)
    m = etree.HTML(img_html)
    img_clear = '//div[@class="content"]/img'
    img_class_clear = '//head/meta[3]/@content'
    img = m.xpath(img_clear)
    img_class = m.xpath(img_class_clear)

    path = r'E:\boom\图片\{}'.format(img_class)
    try:
        os.makedirs(path)
    except:
        pass
    os.chdir(path)
    img_name = 0
    for i in img:
        img_name += 0
        img_data = i.xpath('./@data-original')[0]
        img_resource = requests.get(url=img_data)
        #就卡在这一步,如何才可以得到真正src呢?
        img_src = img_resource.text
        img_aes = requests.get(img_src, headers=headers).content
        with open(str(img_name), 'wb') as f:
            f.write(img_aes)

img_url = 'https://www.86chk.com/tupian/174438.html'
get_img(img_url)

这是技术贴,单纯的就向咨询下爬虫与反爬技术:黄某与赌毒不共戴天。不要删我贴哈~~~~
最佳答案
2021-12-5 19:19:42
非凡 发表于 2021-12-5 18:54
貌似不对呐~
我看了您给的那片帖子,对比了网站里图片的src
这里动态加载后的src好像才是base64编码 ...

看了下txt,确实是base64,但解码出的东西似乎是一个专用的文件,不是图片。
这个得研究研究js是如何使用这个文件的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-5 13:02:17 | 显示全部楼层
百度 python base64转图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-5 13:46:38 | 显示全部楼层
最后一张图就是图片本身,用base64编码了而已。
https://blog.csdn.net/qq_34449006/article/details/84312550
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-5 18:54:42 | 显示全部楼层
本帖最后由 非凡 于 2021-12-5 19:03 编辑
suchocolate 发表于 2021-12-5 13:46
最后一张图就是图片本身,用base64编码了而已。
https://blog.csdn.net/qq_34449006/article/details/8431 ...


貌似不对呐~
我看了您给的那片帖子,对比了网站里图片的src
这里动态加载后的src好像才是base64编码后的图片本体

1.jpg

我试过把这里代码复制到txt文本里,按帖子里方法解码成jpg,能解码成功为相应的图片。

但是这里的字符串不是data:image/jpg;base64开头呐,虽说base64字符串转图片要去掉data:image/jpg;base64开头,但我试图用下面图片里的字符串直接用base64解码成igp文件,却打不开图片呢,这如果说是图片本身,是不是还需要现解码成base64,然后再去解码成jpg文件讷?

2.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-5 19:10:37 | 显示全部楼层
本帖最后由 非凡 于 2021-12-5 19:13 编辑



貌似不对呐~
我搜了base64转图片的帖子,对比了网站里图片的src
这里动态加载后的src好像才是base64编码后的图片本体

1.jpg

我试过把这里代码复制到txt文本里,按帖子里方法解码成jpg,能解码成功为相应的图片。

但是这里的字符串不是data:image/jpg;base64开头呐,虽说base64字符串转图片要去掉data:image/jpg;base64开头,但我试图用下面图片里的字符串直接用base64解码成igp文件,却打不开图片呢,这如果说是图片本身,是不是还需要现解码成base64,然后再去解码成jpg文件讷?

2.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-5 19:14:43 | 显示全部楼层
kogawananari 发表于 2021-12-5 13:02
百度 python base64转图片

虽然知道了base64转的图片,但是这base64编码的图片字符串是在怎么获取啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-5 19:19:42 | 显示全部楼层    本楼为最佳答案   
非凡 发表于 2021-12-5 18:54
貌似不对呐~
我看了您给的那片帖子,对比了网站里图片的src
这里动态加载后的src好像才是base64编码 ...

看了下txt,确实是base64,但解码出的东西似乎是一个专用的文件,不是图片。
这个得研究研究js是如何使用这个文件的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-6 21:44:51 | 显示全部楼层
suchocolate 发表于 2021-12-5 19:19
看了下txt,确实是base64,但解码出的东西似乎是一个专用的文件,不是图片。
这个得研究研究js是如何使 ...

好的,谢谢了~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-24 00:07:55 | 显示全部楼层

楼主已经找到破解的方法了吗?能得到真是的图片地址了吗?求指教,求指点。谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-24 07:42:55 | 显示全部楼层
请问楼主已经解决了吗。求帮助,求分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-2 16:38:15 | 显示全部楼层
灵魂收割者ONE 发表于 2022-10-24 00:07
楼主已经找到破解的方法了吗?能得到真是的图片地址了吗?求指教,求指点。谢谢

没有哦,编码的问题我不知道怎么处理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-2 16:38:57 | 显示全部楼层
非凡 发表于 2022-11-2 16:38
没有哦,编码的问题我不知道怎么处理

取得了图片的base64,但不知道怎么转换成图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-2 16:39:59 | 显示全部楼层
非凡 发表于 2022-11-2 16:38
取得了图片的base64,但不知道怎么转换成图

不对,我说错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 19:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表