真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python實(shí)現(xiàn)爬取馬云的微博功能示例-創(chuàng)新互聯(lián)

本文實(shí)例講述了Python實(shí)現(xiàn)爬取馬云的微博功能。分享給大家供大家參考,具體如下:

創(chuàng)新互聯(lián)專注于東豐企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。東豐網(wǎng)站建設(shè)公司,為東豐等地區(qū)提供建站服務(wù)。全流程定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

分析請求

我們打開 Ajax 的 XHR 過濾器,然后一直滑動頁面加載新的微博內(nèi)容,可以看到會不斷有Ajax請求發(fā)出。

我們選定其中一個(gè)請求來分析一下它的參數(shù)信息,點(diǎn)擊該請求進(jìn)入詳情頁面,如圖所示:

Python實(shí)現(xiàn)爬取馬云的微博功能示例

可以發(fā)現(xiàn)這是一個(gè) GET 請求,請求的參數(shù)有 6 個(gè):display、retcode、type、value、containerid 和 page,觀察這些請求可以發(fā)現(xiàn)只有 page 在變化,很明顯 page 是用來控制分頁的。

分析響應(yīng)

如圖所示:

Python實(shí)現(xiàn)爬取馬云的微博功能示例

它是一個(gè) Json 格式,瀏覽器開發(fā)者工具自動為做了解析方便我們查看,可以看到最關(guān)鍵的兩部分信息就是 cardlistInfo 和 cards,將二者展開,cardlistInfo 里面包含了一個(gè)比較重要的信息就是 total,經(jīng)過觀察后發(fā)現(xiàn)其實(shí)它是微博的總數(shù)量,我們可以根據(jù)這個(gè)數(shù)字來估算出分頁的數(shù)目。

Python實(shí)現(xiàn)爬取馬云的微博功能示例

發(fā)現(xiàn)它又有一個(gè)比較重要的字段,叫做 mblog,繼續(xù)把它展開,發(fā)現(xiàn)它包含的正是微博的一些信息。比如 attitudes_count 贊數(shù)目、comments_count 評論數(shù)目、reposts_count 轉(zhuǎn)發(fā)數(shù)目、created_at 發(fā)布時(shí)間、text 微博正文等等,得來全不費(fèi)功夫,而且都是一些格式化的內(nèi)容,所以我們提取信息也更加方便了。

這樣我們可以請求一個(gè)接口就得到 10 條微博,而且請求的時(shí)候只需要改變 page 參數(shù)即可。這樣我們只需要簡單做一個(gè)循環(huán)就可以獲取到所有的微博了。

實(shí)戰(zhàn)演練

在這里我們就開始用程序來模擬這些 Ajax 請求,將馬云的所有微博全部爬取下來。

首先我們定義一個(gè)方法,來獲取每次請求的結(jié)果,在請求時(shí)page 是一個(gè)可變參數(shù),所以我們將它作為方法的參數(shù)傳遞進(jìn)來,代碼如下:

from urllib.parse import urlencode
import requests
base_url = 'https://m.weibo.cn/api/container/getIndex?'
headers = {
  'Host': 'm.weibo.cn',
  'Referer': 'https://m.weibo.cn/u/2145291155',
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
  'X-Requested-With': 'XMLHttpRequest',
}
def get_page(page):
  params = {
    'display': '0',
    'retcode': '6102',
    'type': 'uid',
    'value': '2145291155',
    'containerid': '1076032145291155',
    'page': page
  }
  url = base_url + urlencode(params)
  try:
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
      return response.json()
  except requests.ConnectionError as e:
    print('Error', e.args)


本文標(biāo)題:Python實(shí)現(xiàn)爬取馬云的微博功能示例-創(chuàng)新互聯(lián)
分享地址:http://weahome.cn/article/jioso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部