python爬微博粉丝的信息_python一键追星,爬取个人微博主页下的图片

本文介绍如何使用Python爬虫批量下载个人微博主页的图片。通过解析网页结构,获取微博卡片信息,提取图片URL,并利用多进程池下载图片。用户只需输入UID和页数即可实现一键下载。
摘要由CSDN通过智能技术生成

一键追星,爬取个人微博主页下的图片

追星族,喜爱明星微博下发的个人照片,一个一个图片下载觉得麻烦,

python爬虫教你一键爬取个人微博主页下的图片

image

搜索自己喜欢的个人微博主页(用户):

此处选择第一个(并且进入其个人主页)

image

image

我们的目标(爬取onIyU-IU中国首站)主页下发布的所有图片

按F12此处用的百度浏览器,刷新并且选择XHr,

image

以看见有三个getindex?uid=.....

这里三个文件便是我们爬取的需要的信息所在

点击第二个后我们可以看见如下的内容

image

分析可以知道:

而且cardlistinfo里面的total为发的微博信息总数

并且能看到一个为since_id(记录下来,后面爬取需要)

cards 为微博信息 点击并且能看到如下信息

image

Large下的URL便是图片的URL,python爬取图片便是这个URL

拉动滑条刷新新的内容

出现了一条新的getindex?uid=.....,点击查看

再点击Headers查看需要提交的信息

image

经过研究可知道不同的微博主页下,变化的数据有

Uid , since_id

准备完毕后开始爬取(图片下载我们使用多进程池)

1.导入需要的库

import requests

import time

from urllib.parse import urlencode

from multiprocessing import Pool

2. get函数 #为得到图片的URL地址

def a(since_id='',uid=0,):

headers = {

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.7 Safari/537.36',

'x-requested-with': 'XMLHttpRequest',

'referer': 'https://m.weibo.cn'

}

params={

'uid':uid,

'luicode':10000011,

'lfid':'231093_-_selffollowed',

'type':int(uid),

'value':5743555203,

'containerid':'107603'+str(uid),

'since_id':since_id

}

lv=[]

url='https://m.weibo.cn/api/container/getIndex?'+urlencode(params)

req=requests.get(url,headers=headers)

req=req.json() #since_id

since_id=req.get('data').get('cardlistInfo').get('since_id')

imgs=req.get('data').get('cards')

for i in imgs:

try:

i=i.get('mblog').get('pics')

for v in i :

v=v.get('large').get('url')

lv.append(v)

except:

continue

time.sleep(0.5)

return lv,since_id

3.编写down函数 下载图片

def down(isd='',lio=''):

headers = {

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.7 Safari/537.36',

'x-requested-with': 'XMLHttpRequest',

'referer': 'https://m.weibo.cn',

}

re = requests.get(isd, headers=headers, )

print(re)

name = str(lio) + '.jpg'

with open(name, 'wb')as f:

f.write(re.content)

print('-' * 10)

time.sleep(0.5)

4. 主函数的编写

if __name__ == '__main__':

lvvv=[]

t=0

sw=0

u = eval(input('输入uid:'))

p = eval(input('输入页数/10:'))

try:

s = a(since_id='', uid=u)

lvvv.extend(s[0])

for o in range(p):

sw+=1

s = a(since_id=s[1], uid=u)

lvvv.extend(s[0])

print(sw)

except:pass

pool=Pool(processes=4)

for i in range(len(lvvv)):

pool.apply_async(down,(lvvv[i],i))

print('star~ star~ star~')

pool.close()

pool.join()

函数就这样编写完成了

运行后,在该程序文件下看见图片

image

啊!!!

女神图片就这样一键下载下来了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值