python如何利用requests和bs4爬取图片?

爬取网站的内容不管爬啥。肯定得找到需要爬取内容的位置。如果是图片的话。首先得找到图片的地址。把链接复制下来打开是你想要的图片的话。直接请求那个地址。写入文件就行。用二进制加后缀就能保存图片了。图片音乐和视频都是一样的。

试着理一下思路。

一般,使用requests发起请求,将目标网页请求过来。当然有可能经过了代理,跳转,认证,对requests都不是问题。接着说BS4爬取图片。

BeautifulSoup4是将html看做一棵树,对其进行结构解析,定位节点,寻找值。这个是建立在完整的html结构体系内。其使用lxml,html5lib等库用作解析引擎。

类似的,仿照jQuery,有大神制作了PyQuery,使用jq的语法操作DOM。

下面说一下,集中情况,如何获取网页内容:

  1. 静态页面。直接使用BS4就是。

  2. 动态页面,如PHP/Java等使用模板引擎生成的网页。结构一般也较为清晰。可以看做是静态页面。

  3. 重js页面。这样的页面一般由前端完成,网页极不易获取,动态变化较大。可能需要其他工具模仿请求,比如selenium。这时候可能用不到requests/bs4。例如必应中文首页背景图。

  4. 前端渲染的页面。如

    vue.js

    react.js

    脚手架搭建的网页,不可能用题主所使用的两个工具拿到数据。phantomjs可以用于此场景。当然,如果使用实际的chrome driver,使用selenium请求数据,也完全没问题。

  5. 防盗链图片类资源。例如微信公众号平台的文章图片,做了防盗链措施。bs4仅用于获取image url,url地址也就没有再次使用的价值。

上面5条,都是在说网页应用。网页在不同的浏览器,PC的谷歌,火狐,Opera,IE等,手机端的浏览器,均可使用此方法。

下面说一下,抓取APP端应用的数据。两类平台,一个Android,一个IOS。因为IOS的封闭性,操作起来极为不便。以安卓为例,因为同样的功能,安卓端大致相同,且安卓手机普及率较高,较为容易获得。且开放性,定制性较好。Python的话,需要使用不同的库,解析Android页面,比如poco。就不展开说了。

以上。

相关代码参考