摘要:無意中發現貼吧也出了個漂流瓶的東西,隨手翻了翻發現居然有好多妹子圖,閑來無事于是就想寫個爬蟲程序把圖片全部抓取下來。具體獲取一頁內容的如下看參數很容易明白,就是當前頁碼,就是當前頁中包含的漂流瓶數量。
無意中發現貼吧也出了個漂流瓶的東西,隨手翻了翻發現居然有好多妹子圖,閑來無事于是就想寫個爬蟲程序把圖片全部抓取下來。
這里是貼吧漂流瓶地址
http://tieba.baidu.com/bottle...
首先打開抓包神器 Fiddler ,然后打開漂流瓶首頁,加載幾頁試試,在Fiddler中過濾掉圖片數據以及非 http 200 狀態碼的干擾數據后,發現每一頁的數據獲取都很有規律,這就給抓取提供了便利。具體獲取一頁內容的url如下:
http://tieba.baidu.com/bottle...
看參數很容易明白,page_number 就是當前頁碼,page_size 就是當前頁中包含的漂流瓶數量。
訪問后得到的是一個json格式的數據,結構大致如下:
{ "error_code": 0, "error_msg": "success", "data": { "has_more": 1, "bottles": [ { "thread_id": "5057974188", "title": "美得不可一世", "img_url": "http://imgsrc.baidu.com/forum/pic/item/a8c87dd062d9f2d3f0113c2ea0ec8a136227cca9.jpg" }, { "thread_id": "5057974188", "title": "美得不可一世", "img_url": "http://imgsrc.baidu.com/forum/pic/item/a8c87dd062d9f2d3f0113c2ea0ec8a136227cca9.jpg" }, ... } }
內容很直白一眼就看出,bottles 中的數據就是我們想要的(thread_id 瓶子具體id, title 妹紙吐槽的內容, img_url 照片真實地址),遍歷 bottles 就可以獲得當前頁的所有漂流瓶子。(其實現在得到的只是封面圖哦,打開具體的瓶子有驚喜,因為我比較懶就懶得寫了,不過我也分析了內部的數據,具體url是:http://tieba.baidu.com/bottle...瓶子thread_id>)
還有一個參數 has_more 猜測是是否存在下一頁的意思。
到這里采集方式應該可以確定了。就是從第一頁不停往后循環采集,直到 has_more 這個參數不為 1 結束。
這里采用的是 python2.7 + urllib2 + demjson 來完成此項工作。urllib2 是python2.7自帶的庫,demjson 需要自己安裝下(一般情況下用python自帶的json庫就可以完成json解析任務,但是現在好多網站提供的json并不規范,這就讓自帶json庫無能為力了。)
demjson 安裝方式 (windows 不需要 sudo)
sudo pip install demjson
或者
2.1獲得一頁內容sudo esay_install demjson
def bottlegen(): page_number = 1 while True: try: data = urllib2.urlopen( "http://tieba.baidu.com/bottle/bottles?page_number=%d&page_size=30" % page_number).read() json = demjson.decode(data) if json["error_code"] == 0: data = json["data"] has_more = data["has_more"] bottles = data["bottles"] for bottle in bottles: thread_id = bottle["thread_id"] title = bottle["title"] img_url = bottle["img_url"] yield (thread_id, title, img_url) if has_more != 1: break page_number += 1 except: raise print("bottlegen exception") time.sleep(5)
這里使用python的生成器來源源不斷的輸出分析到的內容。
2.2根據url保存圖片數據for thread_id, title, img_url in bottlegen(): filename = os.path.basename(img_url) pathname = "tieba/bottles/%s_%s" % (thread_id, filename) print filename with open(pathname, "wb") as f: f.write(urllib2.urlopen(img_url).read()) f.close()2.3全部代碼如下
# -*- encoding: utf-8 -*- import urllib2 import demjson import time import re import os def bottlegen(): page_number = 1 while True: try: data = urllib2.urlopen( "http://tieba.baidu.com/bottle/bottles?page_number=%d&page_size=30" % page_number).read() json = demjson.decode(data) if json["error_code"] == 0: data = json["data"] has_more = data["has_more"] bottles = data["bottles"] for bottle in bottles: thread_id = bottle["thread_id"] title = bottle["title"] img_url = bottle["img_url"] yield (thread_id, title, img_url) if has_more != 1: break page_number += 1 except: raise print("bottlegen exception") time.sleep(5) def imggen(thread_id): try: data = urllib2.urlopen( "http://tieba.baidu.com/bottle/photopbPage?thread_id=%s" % thread_id).read() match = re.search(r"\_.Module.use("encourage/widget/bottle",(.*?),function(){});", data) data = match.group(1) json = demjson.decode(data) json = demjson.decode(json[1].replace(" ", "")) for i in json: thread_id = i["thread_id"] text = i["text"] img_url = i["img_url"] yield (thread_id, text, img_url) except: raise print("imggen exception") try: os.makedirs("tieba/bottles") except: pass for thread_id, _, _ in bottlegen(): for _, title, img_url in imggen(thread_id): filename = os.path.basename(img_url) pathname = "tieba/bottles/%s_%s" % (thread_id, filename) print filename with open(pathname, "wb") as f: f.write(urllib2.urlopen(img_url).read()) f.close()
運行后會先獲得每頁所有瓶子,然后再獲得具體瓶子中的所有圖片,輸出到 tieba/bottles/xxxxx.jpg 中。(因為比較懶就沒做錯誤兼容,見諒 ^_^,,,)
結論結論是,,, 都是騙人的就首頁有幾張好看的 - -,,, 他喵的,,,
最后貼下采集成果文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38580.html
摘要:作為爬蟲的入門教程,我想有必要來個爬蟲程序壓壓驚,爬取性感美女的圖片,然后保存到自己的電腦里面。爽歪歪先看下效果吧,這是我把爬取的圖片自動存儲到的文件夾里邊爬蟲三步驟抓取,分析,存儲。相關文章入門基礎有趣的教程 作為 Python 爬蟲的入門教程,我想有必要來個爬蟲程序壓壓驚,爬取性感美女的圖片,然后保存到自己的電腦里面。爽歪歪~ 先看下效果吧,這是我把爬取的圖片自動存儲到的文件夾里邊...
摘要:楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數據提供網站數據采集和爬蟲軟件定制開發服務,服務范圍涵蓋社交網絡電子商務分類信息學術研究等。 楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...
摘要:我們的目標是用爬蟲來干一件略污事情最近聽說煎蛋上有好多可愛的妹子,而且爬蟲從妹子圖抓起練手最好,畢竟動力大嘛。服務器超載尤其是對給定服務器的訪問過高時。個人爬蟲,如果過多的人使用,可能導致網絡或者服務器阻塞。 我們的目標是用爬蟲來干一件略污事情 最近聽說煎蛋上有好多可愛的妹子,而且爬蟲從妹子圖抓起練手最好,畢竟動力大嘛。而且現在網絡上的妹子很黃很暴力,一下接受太多容易營養不量,但是本著...
摘要:探探機器人,自動根據不同妹紙漢子顏值年齡等類型,喜歡忽略,歡迎各位先看一下實現的結果吧今天要講的主題是使用腳本實現你自己想要自動操控的任意手機。 前言 之前寫了篇文章:【全是干貨】談談如何學習一項新技能,沒有理論,全是實戰,里面第五點提到用腳本玩探探,昨天花了一個小時實現了該功能。 Github:探探機器人,自動根據不同妹紙/漢子顏值、年齡等類型,喜歡、忽略,歡迎各位star 先看一下...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
閱讀 2571·2021-11-22 09:34
閱讀 932·2021-11-19 11:34
閱讀 2801·2021-10-14 09:42
閱讀 1472·2021-09-22 15:27
閱讀 2385·2021-09-07 09:59
閱讀 1731·2021-08-27 13:13
閱讀 3432·2019-08-30 11:21
閱讀 771·2019-08-29 18:35