广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    使用selenium和requests,下载mmjpg上所有的图片

    来源:网络收集  点击:  时间:2024-02-21
    【导读】:
    为什么要爬这个网站呢,并不是因为图片怎么样,不是的,我又不喜欢看这种图片,一点意思也没有。工具/原料morepythonselenium phantomJSrequests方法/步骤1/4分步阅读

    首先,分析网页,网站的URL都很有规律,没个美女的套图是这样http://www.mmjpg.com/mm/1336 ,从1到1336,每张大图的地址是在id为content的div标签里面,如图:

    2/4

    然后爬取的思路就很清晰了,从1到1336,依次获取并打开每一份套图的地址,接着点击所有图片的元素链接,加载出所有图片的地址,再根据获得的图片地址写入到本地文件中。

    这里有个需要注意的地方,当程序不加任何headers直接打开图片地址时,会跳转到同一页面,所以放弃了urllib.request.urlretrieve来下载图片,因为我还没找到怎么在里面加head头信息的方法,跳转的地址如下图:

    3/4

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

    4/4

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

    代码解读1/2

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

    2/2

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

    经过一段时间,大概一个多小时吧,图片下载成果如下:

    注意事项

    需要对python语言有入门的认识

    仅供个人兴趣,请遵守网络采集道德

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_90588.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-07 04:23:41  耗时:0.025
    0.0247s