Python實現微博爬蟲,爬取新浪微博
上程式碼
import requests
import pandas as pd
import json
import re
user_type_dict = {-1:'無認證',0:'個人賬戶',3:'非個人使用者'} # 個人:個人賬戶仍保留橙色黃色標識,非個人使用者(機構、企業、媒體等)將採用全新藍色標識。
def get_one_page(keyword,page):
one_page_data = []
params = {
'containerid': f'100103type=1&q={keyword}',
'page_type': 'searchall',
'page': page
}
url = 'https://m.weibo.cn/api/container/getIndex?'# 請求api
response = requests.get(url,params=params).text
id_ls = re.findall('"id":"(.{16}?)",',response,re.DOTALL)
detail_url = ['https://m.weibo.cn/detail/' + i for i in id_ls]
for i in detail_url:
print(i)
response = requests.get(i).text
# print(response)
data = re.findall("var \$render_data = \[({.*})]\[0]",response,re.DOTALL)[0]
data = json.loads(data)['status']
# 發文時間
created_at_time = data['created_at']
# 文章id
log_id = data['id']
# 文章內容
log_text = data['text']
log_text = re.sub('<.*?>','',log_text)
# 發文裝置
source = data["source"]
# 轉發數"reposts_count": 1376,
reposts_count = data['reposts_count']
# 評論數"comments_count": 10244,
comments_count = data['comments_count']
# 點贊數"attitudes_count": 326440
attitudes_count = data['attitudes_count']
# 使用者id-->"id": 1951123110,
uesr_id = data['user']['id']
# 使用者暱稱
uesr_screen_name = data['user']['screen_name']
# 使用者驗證型別-->"verified_type": 3,
user_type = data['user']['verified_type']
if user_type not in user_type_dict:
continue
user_type = user_type_dict[user_type]
one_piece_data = (created_at_time,i, log_text,source,reposts_count,comments_count,attitudes_count, uesr_id, uesr_screen_name, user_type)
column_name = ('發文時間','文章地址','文章內容','發文裝置','轉發數','評論數','點贊數','使用者id','使用者暱稱','使用者驗證型別')
one_page_data.append(dict(zip(column_name,one_piece_data)))
print(one_piece_data)
return one_page_data
if __name__ == '__main__':
keyword = input('請輸入檢索話題:')
page = input('請輸入獲取前幾頁:')
all_data = []
for i in range(1,eval(page)+1):
try:
one_page_data = get_one_page(keyword, str(i))
except:
continue
all_data += one_page_data
df = pd.DataFrame(all_data)
df.to_excel('微博爬取內容4.xlsx',index = False)
設計思路
從微博手機端進行爬取
https://m.weibo.cn/
文章詳情頁面
https://m.weibo.cn/detail/4539964169139251
我們見到的所有的資訊無非就在這兩個介面,包括文章的視訊播放量啊,評論數啊,點贊數啊,使用者資訊啊,使用者評論啊,使用者端型別啊等等,大家有興趣自行探索,我只介紹如何獲取正文和點贊評論轉發數量以及使用者型別
獲取每一頁的文章列表
我們獲取detail後面的那個標誌,是文章的id和idstr以及mid,在此,我們使用id這個變數
獲取文章的id與短文
https://www.zhihu.com/question/22099567
個人賬戶仍保留橙色黃色標識,非個人使用者(機構、企業、媒體等)將採用全新藍色標識。
評論的id
評論的詳情
詳情的url就是文章詳情連結加上評論的id
https://m.weibo.cn/detail/4539964169139251?cid=4540355267798522
但是可以直接呼叫api實現,cid就是文章的id
相關文章
- JB的Python之旅-爬蟲篇-新浪微博內容爬取Python爬蟲
- Python網路爬蟲2 - 爬取新浪微博使用者圖片Python爬蟲
- Scrapy框架的使用之Scrapy爬取新浪微博框架
- 爬蟲實戰(一):爬取微博使用者資訊爬蟲
- Python 超簡單爬取新浪微博資料 (高階版)Python
- GitHub 上這款新浪微博爬蟲專案,讓你輕鬆掌握微博資料!Github爬蟲
- Scrapy爬取新浪微博移動版使用者首頁第一條微博
- python實現微博個人主頁的資訊爬取Python
- 微博爬取長津湖博文及評論
- 爬蟲實戰(三):微博使用者資訊分析爬蟲
- Python 超簡單爬取微博熱搜榜資料Python
- 一個批次爬取微博資料的神器
- 微博-指定話題當日資料爬取
- 爬蟲爬取微信小程式爬蟲微信小程式
- 爬取微博圖片資料存到Mysql中遇到的各種坑mysql儲存圖片爬取微博圖片MySql
- 新浪微博分享不跳轉
- 為爬蟲獲取登入cookies: 使用Charles和requests模擬微博登入爬蟲Cookie
- python爬蟲實戰教程-Python爬蟲開發實戰教程(微課版)Python爬蟲
- PHP基於laravel框架獲取微博資料之一 模擬新浪微博登入PHPLaravel框架
- 爬蟲——爬取貴陽房價(Python實現)爬蟲Python
- python爬蟲開發微課版pdf_Python爬蟲開發實戰教程(微課版)Python爬蟲
- 「玩轉Python」打造十萬博文爬蟲篇Python爬蟲
- 利用 Python 爬取“工商祕密”微博,看看大家都在關注些什麼?Python
- 新浪微博API生成短連結API
- 轉發新浪微博程式猿心得
- 新浪微博資料中心:2019微博電影白皮書(附下載)
- selenium + xpath爬取csdn關於python的博文博主資訊Python
- 新浪微博私信,即時聊天介面研究
- 修改 support 包 TabLayout,實現新浪微博/即刻 APP 蚯蚓導航效果TabLayoutAPP
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- 新浪微博app如何去喚起跳轉微信小程式APP微信小程式
- 搜狗搜尋微信Python爬蟲案例Python爬蟲
- python 爬蟲 實現增量去重和定時爬取例項Python爬蟲
- 利用爬蟲獲取當前博文數量與字數爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- Python爬蟲實踐--爬取網易雲音樂Python爬蟲
- Python爬蟲實戰詳解:爬取圖片之家Python爬蟲
- 新浪微博動態 RSA 分析圖文+登入