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

資訊專(zhuān)欄INFORMATION COLUMN

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

cnio / 1214人閱讀

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

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

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

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

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

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

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

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


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


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

借助 splash 直接解析渲染后的頁(yè)面

用 mitmproxy 抓手機(jī)APP微博的包,用 APPium 控制手機(jī)刷新評(píng)論

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

然后后面抱著僥幸心理把訪問(wèn)形式改成手機(jī),微博域名就從 weibo.com 變成了 weibo.cn,再看一下 network 選項(xiàng)卡以hotflow 開(kāi)頭的 xhr :

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

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

切換到 Headers 選項(xiàng)卡,看一下 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 是下一次傳回?cái)?shù)據(jù)的最后一條評(píng)論的 ID。也就是往下翻看評(píng)論,每次顯示十條,并在這次所看的評(píng)論里就傳回 下十條評(píng)論 的最后一條評(píng)論的唯一 ID,微博是根據(jù)這個(gè) ID 傳回下十條內(nèi)容。這也就直接限制了每次爬評(píng)論、微博、二級(jí)評(píng)論時(shí)只能一次獲取十條,也無(wú)法利用線程池加速,因?yàn)橹挥蝎@取了這十條才知道下十條請(qǐng)求地址里 max_id 的值。

然后就可以由這些信息構(gòu)造請(qǐng)求,獲取 json 格式的響應(yīng)結(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)

先獲取總評(píng)論數(shù)來(lái)計(jì)算需要多少次才能爬完評(píng)論:

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來(lái)張才知道靠后的評(píng)論都是無(wú)用的(男士跟答主要聯(lián)系方式什么的)評(píng)論。

然后就是獲取圖片地址:

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") 一下,這很重要,因?yàn)楹芏酂o(wú)用評(píng)論并沒(méi)有配圖,也就是沒(méi)有 pic 屬性,要以這種方式過(guò)濾掉。

另外還有這個(gè):

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

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

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

存儲(chǔ)圖片以圖片內(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字符串命名防止重復(fù)圖片

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

有興趣的可以公眾號(hào)回復(fù) 套圖  獲得這次微博圖片和上次知乎圖片

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

公眾號(hào):愛(ài)寫(xiě)bug(ID:iCodeBugs)

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

    jaysun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<