非凡 发表于 2021-11-7 23:33:46

请教爬虫中,关于web前端或者后端的几个理解和问题

在踩点
http://jandan.net/ooxx/MjAyMTExMDctMTM=#comments
的时候,我产出了个疑问,受限于我对web了解,我想在这请教下知道的大神。


就以爬图片为例,在我之前学爬虫的时候我们爬取一个网页上的内容时都是,
1、先向url,发送get请求,的到响应。
2、从响应的一堆html代码中解析到图片的img_url.
3、再向图片的img_url发送get请求,的到响应
4、将响应的代码以保存下来。

但是,我们在打开网页的时候大家都知道网页内容是缓存到下来的,在审查元素抓包的时候,也能很方便的抓到缓存下来的各种文件。
比如当前页面下图片就已经以jpg的格式缓存了。

而且我们用Ctrl+s就直接将这整个页面加载的包全都下载下来了。


—————————————————————————————————————————————————————————————————————————
问题1:有什么办法可以将上面的操作,以爬虫的方式实现呢?
        对于我只需要当前网页所有图片这样的需求,那我不是直接省去了一开始说的爬虫第2步:解析url网页得到图片img_url。和第3步:向图片img_url发get请求。这两操作?
        直接就两步:1、向url,发送请求,得到这网页中的各个包。(或者有没有办法只向网页发起图片的get请求,只得到图片包)
                                2、将得到的img包下载保存。
—————————————————————————————————————————————————————————————————————————
我之前请教验证的帖子中@suchocolate大神说过:由于requests不能像浏览器那样,同时加载一个页面中的多个资源,所以如果页面中有对会话绑定的要求,就需要用到requests.session,让session替你维持会话。
从这话中,我解读到一个信息,我们在浏览器里访问的是一个链接打开的网页是由多种资源拼接起来的。
1、文字
2、图片
3、视频
等等等其它的东西。

而且后续去看这些包,我后面去看网页缓存下的包时,发现,不同类型的包在标头里的请求url还是有变化,

问题2:这个包的请求url就是浏览器访问时的url,想来我用requests发送get请求时的到到响应也就是这一个包了吧,然后通过解析这包的html代码的到图片的img_url.
而图片的请求url却是这


问题3:在用requests爬取'http://jandan.net/ooxx/MjAyMTExMDctMTM=#comments'网页时,有没有哪个方法能向浏览器一样对url发送请求后就一下得到所有当前网页的图片包响应?


我唯一能想到可能实现的便是Selenium工具,毕竟他是直接答浏览器中运行的。
问题4:Selenium能实现我之前设想的操作吗?加载页面所有图片资源,然后下载。(省去解析网页获取图片img_url,和再向img_url发送请求的步骤。)
问题5:Selenium是不是就会同浏览器一样,同时加载一个页面中多个资源?
问题6:Selenium能不能只加载图片资源(或者视频、及其它需要的资源)

或者有没有其它的方法?

再此跪谢给我解惑的大神了。。。。。。。。

wp231957 发表于 2021-11-8 07:40:45

对于爬虫的本质,你好像还有一些误区
爬虫本身就是模拟,你只有发送某个具体的请求,服务器才有可能给你返回响应数据
不可能存在这样的请求:喂,服务器,请把当前页面所有资源都给我打包发过来
服务器会这样回复你:过份了啊,我都不知道当前页面有啥玩意

非凡 发表于 2021-11-8 16:47:31

wp231957 发表于 2021-11-8 07:40
对于爬虫的本质,你好像还有一些误区
爬虫本身就是模拟,你只有发送某个具体的请求,服务器才有可能给你返 ...

那我们在用浏览器访问网页时,不是都能将整个网页的资源缓存下来吗?像那些图片,我用crtl+s就一下全下载下来了
python不能执行这样的操作吗?
页: [1]
查看完整版本: 请教爬虫中,关于web前端或者后端的几个理解和问题