鱼C论坛

 找回密码
 立即注册
查看: 991|回复: 9

[已解决]用requests模块能爬百度图片吗

[复制链接]
发表于 2020-3-30 12:43:08 | 显示全部楼层 |阅读模式

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

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

x
百度图片是动态的,不知道requests能不能爬,单独打开url时候,内容是源代码,没法看
最佳答案
2020-3-30 15:07:36
本帖最后由 admintest166 于 2020-3-30 15:16 编辑

百度的图片 是通过AJAX渲染到页面的 所以你才发现他是动态的 你打开百度图片后 右键审查元素 然后点击XHR 然后图片往下滑 你就会看到有请求的
你requests请求XHR里面接口URL就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-30 13:58:59 | 显示全部楼层
可以,只是你需要多requests.get一次,比如搜猫咪,第一张图片的src是base64压缩的小图,不适合保存。你需要到它大图的页面-href属性,如:

                               
登录/注册后可看大图

之后在新的页面里,你就可以看到原图的url了,下载这个url就可以了。

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-30 14:49:39 | 显示全部楼层
suchocolate 发表于 2020-3-30 13:58
可以,只是你需要多requests.get一次,比如搜猫咪,第一张图片的src是base64压缩的小图,不适合保存。你需 ...

这个图片的大类,class = 'imgitem'里边的objurl属性存在真正地址,我一般用selenium爬这个,但是requests。get(百度图片=猫咪的网址)能查找到imgitem吗,我requests.text里边全是和源代码似的都是静态的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 15:04:46 | 显示全部楼层
你用requests+解析库就可以啊
不需要用selenium 有点大材小用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 15:07:36 | 显示全部楼层    本楼为最佳答案   
本帖最后由 admintest166 于 2020-3-30 15:16 编辑

百度的图片 是通过AJAX渲染到页面的 所以你才发现他是动态的 你打开百度图片后 右键审查元素 然后点击XHR 然后图片往下滑 你就会看到有请求的
你requests请求XHR里面接口URL就行了
QQ图片20200330150940.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-30 16:06:39 | 显示全部楼层
admintest166 发表于 2020-3-30 15:07
百度的图片 是通过AJAX渲染到页面的 所以你才发现他是动态的 你打开百度图片后 右键审查元素 然后点击XHR  ...

为啥我只有第一个文件 ,你后面类型的没有啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 16:09:54 | 显示全部楼层
Chysial 发表于 2020-3-30 16:06
为啥我只有第一个文件 ,你后面类型的没有啊

AJAX就是动态出现的啊 你网页往下拉 每30张图片就会出现
简单的说 你打开了网页默认就是先加载了30张图片所以你才看到只有一个请求 你往下拉 看到第31张图片的时候 就会有请求出来的
你最好还是科普一下AJAX吧 现在很多网站都是AJAX的动态加载
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-30 16:19:48 | 显示全部楼层
admintest166 发表于 2020-3-30 16:09
AJAX就是动态出现的啊 你网页往下拉 每30张图片就会出现
简单的说 你打开了网页默认就是先加载了30张图 ...

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

使用道具 举报

发表于 2020-3-30 18:24:25 | 显示全部楼层
Chysial 发表于 2020-3-30 14:49
这个图片的大类,class = 'imgitem'里边的objurl属性存在真正地址,我一般用selenium爬这个,但是request ...

未必非得要imgitem元素,上面的图2明显就是原图url。
网页返回的text都是静态的,不太理解,你是指没有图片的的url吗,这可能根get的方式有关,header 或 cookie设置不对就有可能发生,这需要看一下代码。
selenium+无头浏览器适合绕过一些xhr或js的问题,但实际上比较消耗性能。打个比方,想要100米高的玻璃窗,selenium就是逐步建造100米高的大楼,玻璃窗会随着大楼建设完成出现。而如果知道玻璃窗的厂家电话,直接买一扇就好了,这是get,如果明白网址url的机理,用urllib或requests会更快。
ajax是在滚动or滑动的时候触发的,但其实只是get的header里加一个"X-Requested-With": "XMLHttpRequest",url有所变化。
看习惯。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-30 20:34:33 | 显示全部楼层
suchocolate 发表于 2020-3-30 18:24
未必非得要imgitem元素,上面的图2明显就是原图url。
网页返回的text都是静态的,不太理解,你是指没有 ...

hh  明白 ok我回去看看requests 但是我比较喜欢selenium的一步一步来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 17:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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