国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

圍觀微博網(wǎng)友發(fā)起的美胸比賽學習爬取微博評論內(nèi)容

cnio / 1204人閱讀

摘要:于是去網(wǎng)上搜一下,搜索結(jié)果都是前兩年爬取微博的方法,那時候還是用以格式傳遞,現(xiàn)在明顯已經(jīng)不是。其他的屬性是一些微博的標題發(fā)送時間內(nèi)容點贊數(shù)評論數(shù)轉(zhuǎn)發(fā)數(shù)和博主相關信息等。

網(wǎng)友:看看胸
女:滾

網(wǎng)友:美胸比賽
女:[圖片消息] ????

繼上次知乎話題 擁有一副好身材是怎樣的體驗? 解析了知乎回答內(nèi)容之后,這次我們來解析一下微博內(nèi)容,以微博網(wǎng)友發(fā)起的美胸大賽為例:

https://m.weibo.cn/detail/4367970740108457

https://m.weibo.cn/detail/4348022520956497

這就是本次要獲取的微博圖片內(nèi)容,共計672張很兇的照片:

下面是講如何獲取的,不感興趣的話直接去公眾號回復 套圖 即可獲得。


首先進入開發(fā)者工具看一下微博結(jié)構(gòu):


這只是一小部分,微博評論和微博用戶發(fā)的微博頁面,里面都是以html5格式傳到本地的,把內(nèi)容格式化之后就會發(fā)現(xiàn),層級非常復雜,有興趣的可以看一下,與其解析這個還不如用selenium更簡單一些。于是當時就產(chǎn)生了兩個思路:

借助 splash 直接解析渲染后的頁面

用 mitmproxy 抓手機APP微博的包,用 APPium 控制手機刷新評論

不管是哪一種,相對于只是獲取一下圖片而言都麻煩。于是去網(wǎng)上搜一下,搜索結(jié)果都是前兩年爬取微博的方法,那時候還是用 ajax 以 json 格式傳遞,現(xiàn)在明顯已經(jīng)不是。

然后后面抱著僥幸心理把訪問形式改成手機,微博域名就從 weibo.com 變成了 weibo.cn,再看一下 network 選項卡以hotflow 開頭的 xhr :

這時候 weibo.cn 傳給本地信息就是簡單的 json 格式啦。上圖就是微博評論列表的評論,可以看到每條評論如果有圖片,就會有 pic 屬性,但是要注意在 pic 下的 直接子 url 只是預覽圖鏈接,并非原圖。原圖鏈接在pic 屬性下 large 下的 url。其他的屬性是一些微博的標題、發(fā)送時間、內(nèi)容、點贊數(shù)、評論數(shù)、轉(zhuǎn)發(fā)數(shù)和博主相關信息等。我們這次重點是圖片,就不管其他的了。

另外微博的反爬措施很強,真的惡心到我了,如果有大規(guī)模爬取需求,建議去淘寶買號,建 Cookie池,或者用代理池不停地切換訪問主機。如果只用自己電腦本地Cookie,那就把請求頭弄全,并限制抓取速度。

切換到 Headers 選項卡,看一下 Request URL

https://m.weibo.cn/comments/hotFlowChild?cid=4376866645060411&max_id=152030087630286&max_id_type=0

可以看出它的格式是

https://m.weibo.cn/comments/hotFlowChild? + cid + max_id + max_id_type"

其中 cid 是每一條微博的唯一ID,max_id 是下一次傳回數(shù)據(jù)的最后一條評論的 ID。也就是往下翻看評論,每次顯示十條,并在這次所看的評論里就傳回 下十條評論 的最后一條評論的唯一 ID,微博是根據(jù)這個 ID 傳回下十條內(nèi)容。這也就直接限制了每次爬評論、微博、二級評論時只能一次獲取十條,也無法利用線程池加速,因為只有獲取了這十條才知道下十條請求地址里 max_id 的值。

然后就可以由這些信息構(gòu)造請求,獲取 json 格式的響應結(jié)果:

comment_url = "https://m.weibo.cn/comments/hotflow?id={weibo_id}&mid={weibo_id}&max_id={max_id}&max_id_type=0"
url = comment_url.format(weibo_id=id, max_id=0)
response = requests.get(url, headers=headers)
result = json.loads(response.text)

先獲取總評論數(shù)來計算需要多少次才能爬完評論:

total_number = result.get("data").get("total_number")
total_number = int(total_number)
for i in range(int(total_number / 10)):
    result = get_page(weibo_id)
    for url in parse_comment(result):
        save_to_img(url)

下載完圖片只有700來張才知道靠后的評論都是無用的(男士跟答主要聯(lián)系方式什么的)評論。

然后就是獲取圖片地址:

def parse_comment(result):
    if result.get("ok") and result.get("data").get("data"):
        comments = result.get("data").get("data")
        for comment in comments:
            if comment.get("pic"):
                url = comment.get("pic").get("large").get("url")
                yield url

要先 if comment.get("pic") 一下,這很重要,因為很多無用評論并沒有配圖,也就是沒有 pic 屬性,要以這種方式過濾掉。

另外還有這個:

這里的二級評論就很有必要爬一下,看一下結(jié)構(gòu):

值得注意的是二級評論里不管有沒有圖片都不會有 pic 屬性,圖片在回答內(nèi)容text 里以 css 方式嵌套的,很明顯就是 a 標簽下的 href 屬性 就是圖片地址。用 pyquery 取出來地址:

childs_comment = result.get("data")
for child_comment in childs_comment:
    text = child_comment.get("text")
    content = pyquery.PyQuery(text)
    url = content("a").attr("href")
    yield url

存儲圖片以圖片內(nèi)容的 md5 值命名,可以去重:

response = requests.get(url)
if response.status_code == 200:img_path = "{0}/{1}.{2}".format(path,md5(response.content).hexdigest(), "jpg")  # 以圖片的md5字符串命名防止重復圖片

最后接入某大廠的人體特征值檢測,考慮到圖片大多沒有露臉,識別男女性別不夠準,這里只把未識別出人體的圖片去掉了(一些表情圖)。

有興趣的可以公眾號回復 套圖  獲得這次微博圖片和上次知乎圖片

本次微博結(jié)構(gòu)比較簡單,與上次關于知乎的文章差不多,不再提供源碼。

公眾號:愛寫bug(ID:iCodeBugs)

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/45152.html

相關文章

  • 利用新浪API實現(xiàn)數(shù)據(jù)的抓取微博數(shù)據(jù)爬取微博爬蟲

    摘要:本人長期出售超大量微博數(shù)據(jù)旅游網(wǎng)站評論數(shù)據(jù),并提供各種指定數(shù)據(jù)爬取服務,。如果用戶傳入偽造的,則新浪微博會返回一個錯誤。 PS:(本人長期出售超大量微博數(shù)據(jù)、旅游網(wǎng)站評論數(shù)據(jù),并提供各種指定數(shù)據(jù)爬取服務,Message to YuboonaZhang@Yahoo.com。由于微博接口更新后限制增大,這個代碼已經(jīng)不能用來爬數(shù)據(jù)了。如果只是為了收集數(shù)據(jù)可以咨詢我的郵箱,如果是為了學習爬蟲,...

    liuyix 評論0 收藏0
  • 利用新浪API實現(xiàn)數(shù)據(jù)的抓取微博數(shù)據(jù)爬取微博爬蟲

    摘要:本人長期出售超大量微博數(shù)據(jù)旅游網(wǎng)站評論數(shù)據(jù),并提供各種指定數(shù)據(jù)爬取服務,。如果用戶傳入偽造的,則新浪微博會返回一個錯誤。 PS:(本人長期出售超大量微博數(shù)據(jù)、旅游網(wǎng)站評論數(shù)據(jù),并提供各種指定數(shù)據(jù)爬取服務,Message to YuboonaZhang@Yahoo.com。由于微博接口更新后限制增大,這個代碼已經(jīng)不能用來爬數(shù)據(jù)了。如果只是為了收集數(shù)據(jù)可以咨詢我的郵箱,如果是為了學習爬蟲,...

    vslam 評論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • Python爬蟲實戰(zhàn),requests模塊,Python實現(xiàn)抓取微博評論

    摘要:前言利用實現(xiàn)抓取微博評論數(shù)據(jù),廢話不多說。讓我們愉快地開始吧開發(fā)工具版本相關模塊模塊模塊模塊模塊模塊以及一些自帶的模塊。環(huán)境搭建安裝并添加到環(huán)境變量,安裝需要的相關模塊即可。 ...

    jaysun 評論0 收藏0

發(fā)表評論

0條評論

cnio

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<