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爬蟲
- 微博爬蟲 java實現爬蟲Java
- [python爬蟲] Selenium爬取新浪微博內容及使用者資訊Python爬蟲
- 爬蟲實戰(一):爬取微博使用者資訊爬蟲
- Scrapy框架的使用之Scrapy爬取新浪微博框架
- python實現微博個人主頁的資訊爬取Python
- Python 超簡單爬取新浪微博資料 (高階版)Python
- 爬蟲實戰(三):微博使用者資訊分析爬蟲
- 用Python寫一個簡單的微博爬蟲Python爬蟲
- 爬蟲——爬取貴陽房價(Python實現)爬蟲Python
- 新浪微博爬蟲分享(一天可抓取 1300 萬條資料)爬蟲
- Python爬取微博資料生成詞雲圖片Python
- Python 超簡單爬取微博熱搜榜資料Python
- 新浪微博APIAPI
- 90行程式碼爬取我的微博行程
- Python爬蟲-用Scrapy框架實現漫畫的爬取Python爬蟲框架
- 爬取微博圖片資料存到Mysql中遇到的各種坑mysql儲存圖片爬取微博圖片MySql
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- [python 爬蟲]第一個Python爬蟲,爬取某個新浪部落格所有文章並儲存為doc文件Python爬蟲
- 使用python呼叫新浪微博介面Python
- iOS 仿新浪微博iOS
- Python爬蟲實戰:爬取淘寶的商品資訊Python爬蟲
- Python爬蟲實踐--爬取網易雲音樂Python爬蟲
- 為爬蟲獲取登入cookies: 使用Charles和requests模擬微博登入爬蟲Cookie
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- 新浪微博加號按鈕動畫實現方案動畫
- python 爬蟲 爬取 learnku 精華文章Python爬蟲
- python爬蟲——爬取大學排名資訊Python爬蟲
- python 爬蟲 實現增量去重和定時爬取例項Python爬蟲
- 微博爬蟲“免登入”技巧詳解及 Java 實現(業餘草的部落格)爬蟲Java
- scrapy-redis實現爬蟲分散式爬取分析與實現Redis爬蟲分散式
- Python爬蟲實戰詳解:爬取圖片之家Python爬蟲
- Python3.X 爬蟲實戰(併發爬取)Python爬蟲
- python爬蟲--爬取鏈家租房資訊Python爬蟲
- Python爬蟲爬取美劇網站Python爬蟲網站
- python爬蟲爬取糗事百科Python爬蟲
- 新浪微博分享不跳轉