Python爬虫--个人微博发布的全部照片、视频

火影  金牌会员 | 2022-9-16 17:17:19 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 889|帖子 889|积分 2667

1、我们的目标是获取微博某博主的全部图片、视频


2、拿到网址后 我们先观察 打开F12  随着下滑我们发现加载出来了一个叫mymblog的东西,展开响应发现需要的东西就在里面


 
3、重点来了!!!


 

通过观察发现第二页比第一页多了参数since_id 而第二页的since_id参数刚好在上一页中能获取到,往下翻页同理 第二页带着第三页需要的参数

4、因为是get请求 接下来就是设置params对下面网址进行请求然后提取bloghttps://weibo.com/ajax/statuses/mymblog
5、不会翻页的我还发现了个简单的方法 不用带since_id参数,只需要给page来个循环也可实现循环 具体如下:
  5.1、把网址设置成这样,
https://weibo.com/ajax/statuses/mymblog?uid=2793306070&page=2&feature=0&since_id=
  5.2、去掉params 具体为啥不带参数也能出来 我也不清楚 反正是发现这么设置url可以实现翻页
 
6、最后看看出来结果(部分照片属于会员可见,但是依然可以拿到高清原图。未显示出来的是因为0擦边严重被微博封了)



 
 
 7、具体代码如下

 
 
  1. 1 import requests
  2. 2
  3. 3 headres = {
  4. 4 '你的': '微博cookie',
  5. 5 'referer': 'https://weibo.com/u/2793306070',
  6. 6 '你的': 'UA',
  7. 7 'x-requested-with': 'XMLHttpRequest',
  8. 8 'x-xsrf-token': '1_g5J4kMvprJh8xD1YgaHWmv'
  9. 9 }
  10. 10
  11. 11 shipindizhi = './陈佩琪个人微博视频/'
  12. 12 tupiandizhi = './陈佩琪个人微博照片/'
  13. 13 n = 1
  14. 14 x = 1
  15. 15 for g in range(1, 11):
  16. 16 url = f'https://weibo.com/ajax/statuses/mymblog?uid=2793306070&page={g}&feature=0&since_id='
  17. 17
  18. 18 rsp_fanye = requests.get(url=url, headers=headres).json()
  19. 19 since_id = rsp_fanye['data']['since_id']
  20. 20 print(since_id)
  21. 21 neirong = rsp_fanye['data']['list']
  22. 22 # 获得图片(获得文本,有图片获得图片)
  23. 23 for i in neirong:
  24. 24 text = i['text_raw'].replace('\n','')
  25. 25 if 'pic_infos' in i:
  26. 26 tupian = i['pic_infos']
  27. 27 # print(tupian)
  28. 28 for j in tupian:
  29. 29 # print(j)
  30. 30 tupian_url = i['pic_infos'][j]['mw2000'].get('url')
  31. 31 # print(tupian_url)
  32. 32 pinjie = tupiandizhi + 'tupian_%s' % x + '.' + '.jpg'
  33. 33 f = open(pinjie, mode='wb')
  34. 34 f.write(requests.get(url=tupian_url).content)
  35. 35 x += 1
  36. 36 print(pinjie+'图片保存成功!!!')
  37. 37
  38. 38 # 获得视频
  39. 39 for j in neirong:
  40. 40 if 'page_info' in j:
  41. 41 shiping = j['page_info']
  42. 42 if 'media_info' in shiping:
  43. 43 media_info = shiping['media_info']['mp4_720p_mp4']
  44. 44 # print(media_info)
  45. 45 pinjie = shipindizhi + 'shiping_%s' % n + '.' + '.mp4'
  46. 46 f = open(pinjie, mode='wb')
  47. 47 f.write(requests.get(url=media_info).content)
  48. 48 n += 1
  49. 49 print(pinjie+'图片保存成功!!!')
复制代码
 




 




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表