使用selenium和requests,下载mmjpg上所有的图片
来源:网络收集 点击: 时间:2024-02-21首先,分析网页,网站的URL都很有规律,没个美女的套图是这样http://www.mmjpg.com/mm/1336 ,从1到1336,每张大图的地址是在id为content的div标签里面,如图:

然后爬取的思路就很清晰了,从1到1336,依次获取并打开每一份套图的地址,接着点击所有图片的元素链接,加载出所有图片的地址,再根据获得的图片地址写入到本地文件中。
这里有个需要注意的地方,当程序不加任何headers直接打开图片地址时,会跳转到同一页面,所以放弃了urllib.request.urlretrieve来下载图片,因为我还没找到怎么在里面加head头信息的方法,跳转的地址如下图:

这时只要加上head头信息就可以解决了,其中关键值是referer,只要是本地域名下都可以,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。

代码如下:用了比较简单的代码。

代码首先用requests造了一个用来下载图片的函数,传入下载地址和图片文件名为参数,以备获取到图片地址后直接使用,然后使用selenium依次打开从1到1336份套图,定位“全部图片”元素,进行点击。

也可以直接用driver.find_element_by_id(opic)来定位,那样会更加简单准确,不过经常练习使用xpath来定位也是很有益处的,.click()点击元素后,重新打印源码就会加载出所有图片的信息了,如图一所示,接着定位获取标题,加入递增标量后用来当做文件的名称,就不用管每一份套图具体有多少张图片了,继续定位图片链接,并获取href属性,来作为下载函数的参数,在每个套图循环中运行函数完成图片下载。
经过一段时间,大概一个多小时吧,图片下载成果如下:

需要对python语言有入门的认识
仅供个人兴趣,请遵守网络采集道德
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_90588.html