美文网首页
scrapy抓取瀑布流模式图片

scrapy抓取瀑布流模式图片

作者: 玩阿轲睡妲己 | 来源:发表于2017-11-20 20:18 被阅读0次

    大家好,第一次在简书分享知识,请多指教~~

    搜狗的图片质量实在是太棒了(清晰,大方),好啦,那就开始吧!

    目标网页在这里,今天我们就抓取sogou的lofter图片,目前大概有1600张左右。

    下面是目标图片:

    目标页面

    这个网页是瀑布流模式,初始展现在页面上的只有很少一部分

    按下Chrome浏览器的F12,选择XHR,如下图

    发现下面的列表里只有一个链接,它是目前为止网页中显示的东西。

    然后把鼠标移动到页面上,往下滚动滑轮,发现图片像瀑布一样“刷”一下出来了,列表中出现了第二个链接,这个链接里就包含刚“刷”出来的图片的信息。

    如图

    右键选择Open link in new tab,打开以后发现是一写整整齐齐的数据,里面有想要的图片url,如图:

    以此类推:把鼠标再往下滑,会发现又出来了几个链接,链接里的数据就是被渲染进网页再显示出来的图片。

    那把这个链接内容获取下来再提取需要的图片url就行了。分析出来的链接:

    http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=LOFTER&tag=%E5%85%A8%E9%83%A8&start=15&len=15

    http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=LOFTER&tag=%E5%85%A8%E9%83%A8&start=30&len=15

    发现只有末尾的start在变化,len表示的是从start位置再往后出现len张图片,可以用一个for循环依次叠加start,再把链接都放进start_urls列表里,但是有点麻烦

    把尾部改成这样

    &start=15&len=2000

    每一张图片都有sthumbUrl格式的链接,随便选择一个打开看看

    http://img01.sogoucdn.com/app/a/100520024/c612e7199aea6b687575f2ca112323c3

    那么有多少个sthumbUrl就有多少张图片,出现的对应数据和搜索结果如下

    共有1606张高清图片。

    然后用scrapy获取 response.body,再用正则表达式提取出来sthumbUrl后面的图片url就可以了

    正则表达式链接 :

    Python 2.7.13

    Python 3.6.1

    提取方法:

    pic_url = re.findall('"thumbUrl":"(.*?)",', html)

    re.findall()返回html中所有的匹配结果列表,结果取括号部分(注意返回的是一个List)

    根据图片的url就一个一个下载下来就行了

    response = urllib2.urlopen(imgUrl)

    fpi.write(response.read())

    存到电脑上就ok啦

    相关文章

      网友评论

          本文标题:scrapy抓取瀑布流模式图片

          本文链接:https://www.haomeiwen.com/subject/sldbvxtx.html