最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲爬取新浪微博內(nèi)容示例【基于代理IP】

 更新時(shí)間:2018年08月03日 10:37:08   作者:Jepson2017  
這篇文章主要介紹了Python爬蟲爬取新浪微博內(nèi)容,結(jié)合實(shí)例形式分析了Python基于代理IP實(shí)現(xiàn)的微博爬取與抓包分析相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python爬蟲爬取新浪微博內(nèi)容。分享給大家供大家參考,具體如下:

用Python編寫爬蟲,爬取微博大V的微博內(nèi)容,本文以女神的微博為例(爬新浪m站:https://m.weibo.cn/u/1259110474

一般做爬蟲爬取網(wǎng)站,首選的都是m站,其次是wap站,最后考慮PC站。當(dāng)然,這不是絕對(duì)的,有的時(shí)候PC站的信息最全,而你又恰好需要全部的信息,那么PC站是你的首選。一般m站都以m開頭后接域名, 所以本文開搞的網(wǎng)址就是 m.weibo.cn。

前期準(zhǔn)備

1.代理IP

網(wǎng)上有很多免費(fèi)代理ip,如西刺免費(fèi)代理IPhttp://www.xicidaili.com/,自己可找一個(gè)可以使用的進(jìn)行測(cè)試;

2.抓包分析

通過抓包獲取微博內(nèi)容地址,這里不再細(xì)說,不明白的小伙伴可以自行百度查找相關(guān)資料,下面直接上完整的代碼

完整代碼:

# -*- coding: utf-8 -*-
import urllib.request
import json
#定義要爬取的微博大V的微博ID
id='1259110474'
#設(shè)置代理IP
proxy_addr="122.241.72.191:808"
#定義頁(yè)面打開函數(shù)
def use_proxy(url,proxy_addr):
  req=urllib.request.Request(url)
  req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0")
  proxy=urllib.request.ProxyHandler({'http':proxy_addr})
  opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
  urllib.request.install_opener(opener)
  data=urllib.request.urlopen(req).read().decode('utf-8','ignore')
  return data
#獲取微博主頁(yè)的containerid,爬取微博內(nèi)容時(shí)需要此id
def get_containerid(url):
  data=use_proxy(url,proxy_addr)
  content=json.loads(data).get('data')
  for data in content.get('tabsInfo').get('tabs'):
    if(data.get('tab_type')=='weibo'):
      containerid=data.get('containerid')
  return containerid
#獲取微博大V賬號(hào)的用戶基本信息,如:微博昵稱、微博地址、微博頭像、關(guān)注人數(shù)、粉絲數(shù)、性別、等級(jí)等
def get_userInfo(id):
  url='https://m.weibo.cn/api/container/getIndex?type=uid&value='+id
  data=use_proxy(url,proxy_addr)
  content=json.loads(data).get('data')
  profile_image_url=content.get('userInfo').get('profile_image_url')
  description=content.get('userInfo').get('description')
  profile_url=content.get('userInfo').get('profile_url')
  verified=content.get('userInfo').get('verified')
  guanzhu=content.get('userInfo').get('follow_count')
  name=content.get('userInfo').get('screen_name')
  fensi=content.get('userInfo').get('followers_count')
  gender=content.get('userInfo').get('gender')
  urank=content.get('userInfo').get('urank')
  print("微博昵稱:"+name+"\n"+"微博主頁(yè)地址:"+profile_url+"\n"+"微博頭像地址:"+profile_image_url+"\n"+"是否認(rèn)證:"+str(verified)+"\n"+"微博說明:"+description+"\n"+"關(guān)注人數(shù):"+str(guanzhu)+"\n"+"粉絲數(shù):"+str(fensi)+"\n"+"性別:"+gender+"\n"+"微博等級(jí):"+str(urank)+"\n")
#獲取微博內(nèi)容信息,并保存到文本中,內(nèi)容包括:每條微博的內(nèi)容、微博詳情頁(yè)面地址、點(diǎn)贊數(shù)、評(píng)論數(shù)、轉(zhuǎn)發(fā)數(shù)等
def get_weibo(id,file):
  i=1
  while True:
    url='https://m.weibo.cn/api/container/getIndex?type=uid&value='+id
    weibo_url='https://m.weibo.cn/api/container/getIndex?type=uid&value='+id+'&containerid='+get_containerid(url)+'&page='+str(i)
    try:
      data=use_proxy(weibo_url,proxy_addr)
      content=json.loads(data).get('data')
      cards=content.get('cards')
      if(len(cards)>0):
        for j in range(len(cards)):
          print("-----正在爬取第"+str(i)+"頁(yè),第"+str(j)+"條微博------")
          card_type=cards[j].get('card_type')
          if(card_type==9):
            mblog=cards[j].get('mblog')
            attitudes_count=mblog.get('attitudes_count')
            comments_count=mblog.get('comments_count')
            created_at=mblog.get('created_at')
            reposts_count=mblog.get('reposts_count')
            scheme=cards[j].get('scheme')
            text=mblog.get('text')
            with open(file,'a',encoding='utf-8') as fh:
              fh.write("----第"+str(i)+"頁(yè),第"+str(j)+"條微博----"+"\n")
              fh.write("微博地址:"+str(scheme)+"\n"+"發(fā)布時(shí)間:"+str(created_at)+"\n"+"微博內(nèi)容:"+text+"\n"+"點(diǎn)贊數(shù):"+str(attitudes_count)+"\n"+"評(píng)論數(shù):"+str(comments_count)+"\n"+"轉(zhuǎn)發(fā)數(shù):"+str(reposts_count)+"\n")
        i+=1
      else:
        break
    except Exception as e:
      print(e)
      pass
if __name__=="__main__":
  file=id+".txt"
  get_userInfo(id)
  get_weibo(id,file)

爬取結(jié)果

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python實(shí)現(xiàn)向服務(wù)器請(qǐng)求壓縮數(shù)據(jù)及解壓縮數(shù)據(jù)的方法示例

    Python實(shí)現(xiàn)向服務(wù)器請(qǐng)求壓縮數(shù)據(jù)及解壓縮數(shù)據(jù)的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)向服務(wù)器請(qǐng)求壓縮數(shù)據(jù)及解壓縮數(shù)據(jù)的方法,涉及Python文件傳輸及zip文件相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • pyqt5 刪除layout中的所有widget方法

    pyqt5 刪除layout中的所有widget方法

    今天小編就為大家分享一篇pyqt5 刪除layout中的所有widget方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Pyscript使用本地Pyodide配置步驟

    Pyscript使用本地Pyodide配置步驟

    PyScript是“一個(gè)用于在 HTML(如 PHP)中交錯(cuò) Python 的系統(tǒng),這篇文章主要介紹了Pyscript使用本地Pyodide配置方法,需要的朋友可以參考下
    2022-12-12
  • python如何使用contextvars模塊源碼分析

    python如何使用contextvars模塊源碼分析

    這篇文章主要介紹了python如何使用contextvars模塊源碼分析,contextvars是Python3.7后的官方庫(kù),功能就是可以為多線程以及asyncio生態(tài)添加上下文功能,即使程序在多個(gè)協(xié)程并發(fā)運(yùn)行的情況下,也能調(diào)用到程序的上下文變量,?從而使我們的邏輯解耦
    2022-06-06
  • Python裝飾器decorator用法實(shí)例

    Python裝飾器decorator用法實(shí)例

    這篇文章主要介紹了Python裝飾器decorator用法,以實(shí)例形式詳細(xì)講述了Python裝飾器及相關(guān)概念與用途,需要的朋友可以參考下
    2014-11-11
  • Python裝飾器(decorator)定義與用法詳解

    Python裝飾器(decorator)定義與用法詳解

    這篇文章主要介紹了Python裝飾器(decorator)定義與用法,結(jié)合具體實(shí)例形式詳細(xì)分析了Python裝飾器的概念、功能及相關(guān)使用技巧,需要的朋友可以參考下
    2018-02-02
  • python中使用np.delete()的實(shí)例方法

    python中使用np.delete()的實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python中使用np.delete()的實(shí)例方法,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • Python獲取android設(shè)備cpu和內(nèi)存占用情況

    Python獲取android設(shè)備cpu和內(nèi)存占用情況

    這篇文章主要介紹了Python獲取android設(shè)備cpu和內(nèi)存占用情況,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • pycharm 使用心得(九)解決No Python interpreter selected的問題

    pycharm 使用心得(九)解決No Python interpreter selected的問題

    PyCharm 是由JetBrains打造的一款 Python IDE。具有智能代碼編輯器,能理解 Python 的特性并提供卓越的生產(chǎn)力推進(jìn)工具:自動(dòng)代碼格式化、代碼完成、重構(gòu)、自動(dòng)導(dǎo)入和一鍵代碼導(dǎo)航等。這些功能在先進(jìn)代碼分析程序的支持下,使 PyCharm 成為 Python 專業(yè)開發(fā)人員和剛起步人員使用的有力工具。
    2014-06-06
  • Python?pluggy框架使用示例代碼

    Python?pluggy框架使用示例代碼

    這篇文章主要介紹了Python?pluggy框架基礎(chǔ)用法總結(jié),本文通過三個(gè)例子結(jié)合代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05

最新評(píng)論

柯坪县| 莱州市| 岗巴县| 诸城市| 始兴县| 图们市| 壶关县| 罗定市| 新昌县| 尼勒克县| 仙居县| 东乌珠穆沁旗| 林芝县| 冀州市| 乐至县| 怀安县| 库伦旗| 自贡市| 中卫市| 油尖旺区| 岱山县| 若羌县| 渭源县| 讷河市| 福鼎市| 民和| 雷山县| 福建省| 信丰县| 茶陵县| 永泰县| 故城县| 徐水县| 博湖县| 仁化县| 汾西县| 白银市| 商河县| 仁布县| 东至县| 罗甸县|