大家好看峻,第一次在簡(jiǎn)書分享知識(shí)郎任,請(qǐng)多指教~~
搜狗的圖片質(zhì)量實(shí)在是太棒了(清晰,大方)备籽,好啦舶治,那就開始吧!
目標(biāo)網(wǎng)頁在 這里 车猬,今天我們就抓取sogou的lofter圖片霉猛,目前大概有1600張左右。
下面是目標(biāo)圖片:
這個(gè)網(wǎng)頁是瀑布流模式珠闰,初始展現(xiàn)在頁面上的只有很少一部分
按下Chrome瀏覽器的F12,選擇XHR,如下圖
發(fā)現(xiàn)下面的列表里只有一個(gè)鏈接惜浅,它是目前為止網(wǎng)頁中顯示的東西。
然后把鼠標(biāo)移動(dòng)到頁面上伏嗜,往下滾動(dòng)滑輪坛悉,發(fā)現(xiàn)圖片像瀑布一樣“刷”一下出來了,列表中出現(xiàn)了第二個(gè)鏈接承绸,這個(gè)鏈接里就包含剛“刷”出來的圖片的信息裸影。
右鍵選擇Open link in new tab,打開以后發(fā)現(xiàn)是一寫整整齊齊的數(shù)據(jù)军熏,里面有想要的圖片url轩猩,如圖:
以此類推:把鼠標(biāo)再往下滑,會(huì)發(fā)現(xiàn)又出來了幾個(gè)鏈接荡澎,鏈接里的數(shù)據(jù)就是被渲染進(jìn)網(wǎng)頁再顯示出來的圖片均践。
那把這個(gè)鏈接內(nèi)容獲取下來再提取需要的圖片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
發(fā)現(xiàn)只有末尾的start在變化摩幔,len表示的是從start位置再往后出現(xiàn)len張圖片彤委,可以用一個(gè)for循環(huán)依次疊加start,再把鏈接都放進(jìn)start_urls列表里或衡,但是有點(diǎn)麻煩
把尾部改成這樣
&start=15&len=2000
每一張圖片都有sthumbUrl格式的鏈接焦影,隨便選擇一個(gè)打開看看
http://img01.sogoucdn.com/app/a/100520024/c612e7199aea6b687575f2ca112323c3
那么有多少個(gè)sthumbUrl就有多少張圖片,出現(xiàn)的對(duì)應(yīng)數(shù)據(jù)和搜索結(jié)果如下
共有1606張高清圖片薇宠。
然后用scrapy獲取 response.body,再用正則表達(dá)式提取出來sthumbUrl后面的圖片url就可以了
正則表達(dá)式鏈接 :
提取方法:
pic_url = re.findall('"thumbUrl":"(.*?)",', html)
re.findall()返回html中所有的匹配結(jié)果列表偷办,結(jié)果取括號(hào)部分(注意返回的是一個(gè)List)
根據(jù)圖片的url就一個(gè)一個(gè)下載下來就行了
response = urllib2.urlopen(imgUrl)
fpi.write(response.read())
存到電腦上就ok啦