首页 > 编程语言 >Python 爬取微博指定博主所有内容

Python 爬取微博指定博主所有内容

时间:2022-12-28 18:35:45浏览次数:56  
标签:img Python self list 爬取 item 微博 url id


这么做有啥用呢,一方面是为了防止他的微博删除,另一方面怕被系统和谐,所以就把他的微博内容爬取下来,然后保存到word文档中,以备不时查看...


那么接下来进入爬虫分析环节,小编这里选取的链接是:

https://m.weibo.cn/u/1893801487?jumpfrom=weibocom

打开链接后,我们可以看到下面有几个请求,查看了相应的链接后,通过和页面呈现内容对比,我们发现了数据返回的接口。

Python 爬取微博指定博主所有内容_IP


数据接口如下图:

Python 爬取微博指定博主所有内容_json_02


再来看看请求的数据结构:

Python 爬取微博指定博主所有内容_数据_03


那我们想要在往下看更多的内容怎么办呢,接着往下翻页,看到他再次发送了请求,看看数据结构是否有变化,结果发现了有多出一个since_id。

Python 爬取微博指定博主所有内容_IP_04


结合接口返回数据分析,可以发现 since_id 是上一页接口返回数据中的一个值。那么我们想要查看下一页的数据的话,就拿上一次数据中的since_id 去构建请求就可以,那么什么时候数据没了呢,当数据中不存在 since_id 后,数据就到底了。

Python 爬取微博指定博主所有内容_json_05


这一过程和前几篇给大家分享的 ​快手​​ 和 ​抖音​ 的爬虫思路很相像,有兴趣的点击查看。因小编这里选择的数据量太大了,就不使劲往下拉了。接下来就是代码演示环节了。


代码如下:

import requests
import json
import time
import docx
from docx.shared import Inches




class Weibo(object):


def __init__(self):
self.req = requests.Session()
self.page = 1
self.headers = {
"user-agent": "'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15"
" (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'",
}
self.weekdict = {
'Mon': '星期一', 'Tue': '星期二', 'Wed': '星期三',
'Thu': '星期四', 'Fri': '星期五', 'Sat': '星期六', 'Sun': '星期日'
}
self.mondict = {
'Jan': '01', 'Feb': '02', 'Mar': '03', 'Apr': '04', 'May': '05', 'Jun': '06', 'Jul': '07',
'Aug': '08', 'Sep': '09', 'Oct': '10', 'Nov': '11', 'Dec': '12'
}


self.file = docx.Document() # 创建内存中的word文档对象


def getList(self, since_id=None):
global page
while True:
url = 'https://m.weibo.cn/api/container/getIndex?type=uid' \
'&value=6367430139&containerid=1076036367430139&since_id={}'.format(since_id)
res = self.req.get(url, headers=self.headers)
r = json.loads(res.text)
since_id = r['data']['cardlistInfo']['since_id']
cards_list = r['data']['cards']
for item in cards_list:
img_url_list = []
if item['mblog']['isLongText']:
if item['mblog']['pic_num'] > 0:
img_url_list = item['mblog']['pics']
self.getLongText(item['mblog']['id'], item['mblog']['created_at'], img_url_list)
else:
if item['mblog']['pic_num'] > 0:
img_url_list = item['mblog']['pics']
txt = item['mblog']['text'].replace('<br />', '\n')
self.writeFile(item['mblog']['created_at'], txt, img_url_list)
page = page + 1
time.sleep(2)
self.file.save("wb.docx")


# 获取全文
def getLongText(self, id, date, imglist):
url = 'https://m.weibo.cn/statuses/extend?id={}'.format(id)
res = self.req.get(url)
try:
r = json.loads(res.text)
txt = r['data']['longTextContent'].replace('<br />', '\n')
self.writeFile(date, txt, imglist)
print(r['data']['longTextContent'])
print('写入成功,{}'.format(url))
except:
print('写入文件出错,跳过···{}'.format(url))
time.sleep(2)


def fotmatDate(self, str_param):
param_list = str_param.split(' ')
date = '{}-{}-{} {} {}'.format(param_list[-1], self.mondict[param_list[1]],
param_list[2], param_list[3], self.weekdict[param_list[0]])
return date


def writeFile(self, date, data, img_list):
self.file.add_heading(self.fotmatDate(date), level=1)
para = self.file.add_paragraph(data)
run = para.add_run('')
run.add_break()
for item in img_list:
img = self.req.get(item['large']['url']).content
with open('img.jpg', 'wb') as f:
f.write(img)
run.add_picture('img.jpg', width=Inches(2))




if __name__ == '__main__':
weibo = Weibo()
weibo.getList()


标签:img,Python,self,list,爬取,item,微博,url,id
From: https://blog.51cto.com/u_15924937/5976117

相关文章

  • 使用Python无水印下载抖音图文
    从刚上线时只是一款音乐创意短视频社交软件,到如今涵盖了短视频、直播、社交、购物、本地生活服务,抖音正在急速扩张。抖音的野心还不止于此。今年,抖音上线了新的内容——图文......
  • python 实现抖音通过关键字搜索下载短视频
    在日常生活中,随着短视频的发展,大家使用抖音进行数据搜索,也占了一大部分,今天给大家带来的文章抖音根据关键词进行视频下载有什么作用呢?其实很多时候我们制作视频,写脚本,都需要......
  • Python抖音直播录屏 || 下载,支持多主播同时录制
    抖音作为当今最火的自媒体之一,是自媒体人素材的来源之一,自从电商直播火爆以后,抖音似乎也迎来了业务的新高度,反正直播业务开展如火如荼,那么我们进行直播录制有什么作用呢?在热......
  • Python爬取抖音创作者所有短视频
    小伙伴们,大家好呀,上次给大家分享了​​如何爬取快手up主所有的短视频​​后,不少人在后台留言说,想要爬取抖音up主的所有短视频,那么今天代码就来了。其实有了​​爬取快手up主......
  • Python-open函数-读写文件
    一、open函数语法open()函数的作用是打开一个文件,并返回一个file对象(即文件对象)。open是一个动作,可以理解为我们打开文档的点击动作。file对象是一个实物,可以理......
  • python爬取百度图库多张图片
    hello啊,各位小伙伴,眨眼间7月份过去了,八月已经悄然来临,不知道八月大家又立了什么样的flag,作为一个低产的公众号运营者,想想都是一阵莫名奇妙的辛酸,每月就三四篇文章,唉…不多......
  • Python 通过关键词下载百度图片
    打开百度图片后,输入相关关键词,根据分析,发现百度图片初始只会渲染部分图像到页面上,随着滚轮下滚,就会请求新的数据,因此我们可以判断页面是经过ajax请求数据后,渲染至页面。百度......
  • Python 解析西瓜视频 | 无水印高清下载
    很多小伙伴都有使用西瓜视频,现在西瓜视频作为字节旗下的全家桶一员,拥有很多优质的视频,是很多自媒体小伙伴需要的。但是如何无水印下载这些西瓜视频呢?却让很多人为难,缺少这个......
  • Python 通过 requests 解析抖音直播源
    示例代码:importreimportsysimportrequestsDEBUG=Falseheaders={'authority':'v.douyin.com','user-agent':'Mozilla/5.0(iPhone;CPUiPhoneOS10_3_1l......
  • 使用Py的多线程爬取P站,老司机慎入。
    hello呀,小伙伴们,今个给大家带来的是爬取P站的教程,别搞错,这个不是你想的那个p站。这样想肯定是你用黄黄的思想点进来的。众所周知,P站是个插画网站,也包含一些R18的插画。停停......