python爬虫微博图片_python爬取微博图片及内容

该博客介绍了如何使用Python爬虫抓取指定微博用户的图片和内容。首先,通过输入微博UID获取用户信息,包括昵称、主页地址、头像、认证状态等。然后,利用ProxyHandler随机代理IP,遍历用户微博页面,提取每条微博的图片URL并下载,同时将微博内容、点赞数、评论数和转发数写入文本文件。
摘要由CSDN通过智能技术生成

import random

import urllib.request

import json

import re

import requests

import time

id=(input("请输入要抓的微博uid:"))

na='a'

iplist=['112.228.161.57:8118','125.126.164.21:34592','122.72.18.35:80','163.125.151.124:9999','114.250.25.19:80']proxy_addr="163.125.151.124:9999"

def use_proxy(url,proxy_addr):

req=urllib.request.Request(url)

req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0")

proxy=urllib.request.ProxyHandler({'http':random.choice(iplist)})

opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)

urllib.request.install_opener(opener)

data=urllib.request.urlopen(req).read().decode('utf-8','ignore')

return data

def get_containerid(url):

data=use_proxy(url,random.choice(iplist))

content=json.loads(data).get('data')

for data in content.get('tabsInfo').get('tabs'):

if(data.get('tab_type')=='weibo'):

containerid=data.get('containerid')

return containerid

def get_userInfo(id):

url='https://m.weibo.cn/api/container/getIndex?type=uid&value='+id

data=use_proxy(url,random.choice(iplist))

content=json.loads(data).get('data')

profile_image_url=content.get('userInfo').get('profile_image_url')

description=content.get('userInfo').get('description')

profile_url=content.get('userInfo').get('profile_url')

verified=content.get('userInfo').get('verified')

guanzhu=content.get('userInfo').get('follow_count')

name=content.get('userInfo').get('screen_name')

na=name

fensi=content.get('userInfo').get('followers_count')

gender=content.get('userInfo').get('gender')

urank=content.get('userInfo').get('urank')

print("微博昵称:"+name+"\n"+"微博主页地址:"+profile_url+"\n"+"微博头像地址:"+profile_image_url+"\n"+"是否认证:"+str(verified)+"\n"+"微博说明:"+description+"\n"+"关注人数:"+str(guanzhu)+"\n"+"粉丝数:"+str(fensi)+"\n"+"性别:"+gender+"\n"+"微博等级:"+str(urank)+"\n")

def get_weibo(id,file):

i=1

Directory = '.\zxcWeibo\pic\\'

while True:

url='https://m.weibo.cn/api/container/getIndex?type=uid&value='+id

weibo_url='https://m.weibo.cn/api/container/getIndex?type=uid&value='+id+'&containerid='+get_containerid(url)+'&page='+str(i)

try:

data=use_proxy(weibo_url,random.choice(iplist))

content=json.loads(data).get('data')

cards=content.get('cards')

if(len(cards)>0):

for j in range(len(cards)):

print("-----正在爬取第"+str(i)+"页,第"+str(j)+"条微博------")

card_type=cards[j].get('card_type')

if(card_type==9):

mblog=cards[j].get('mblog')

#print(mblog)

#print(str(mblog).find("转发微博"))

if str(mblog).find('retweeted_status') == -1:

if str(mblog).find('original_pic') !=-1:

img_url=re.findall(r"'url': '(.+?)'", str(mblog))##pics(.+?)

n = 1

timename = str(time.time())

timename = timename.replace('.', '')

timename = timename[7:]#利用时间作为独特的名称

for url in img_url:

print('第' + str(n) + ' 张', end='')

with open(Directory + timename+url[-5:], 'wb') as f:

f.write(requests.get(url).content)

print('...OK!')

n = n + 1

if( n%3==0 ): ##延迟爬取,防止截流

time.sleep(3)

attitudes_count=mblog.get('attitudes_count')

comments_count=mblog.get('comments_count')

created_at=mblog.get('created_at')

reposts_count=mblog.get('reposts_count')

scheme=cards[j].get('scheme')

text=mblog.get('text')

with open(file,'a',encoding='utf-8') as fh:

fh.write("----第"+str(i)+"页,第"+str(j)+"条微博----"+"\n")

fh.write("微博地址:"+str(scheme)+"\n"+"发布时间:"+str(created_at)+"\n"+"微博内容:"+text+"\n"+"点赞数:"+str(attitudes_count)+"\n"+"评论数:"+str(comments_count)+"\n"+"转发数:"+str(reposts_count)+"\n")

i+=1

else:

break

except Exception as e:

print(e)

pass

if __name__=="__main__":

file='.\zxcWeibo\\'+id+".txt"

get_userInfo(id)

get_weibo(id,file)

### 回答1: 取微博数据是指通过爬取微博网站上的内容,获取用户在微博上发布的各种信息,包括文字、图片、视频等。爬取微博数据的方式可以使用Python编程语言中的爬虫技术来实现。 Python爬虫是一种自动获取网页内容的技术,通过模拟浏览器行为,可以获取网页上的数据。对于微博数据的爬取,可以通过Python爬取微博官方API接口或者直接爬取微博网页上的内容爬取微博数据需要首先进行身份认证和授权,获取访问权限。然后,可以通过API接口或者请求微博网页,获取微博网站上的数据。可以将数据保存在数据库中,或者直接进行分析和处理。 爬取到的微博数据可以用于各种目的,如数据开发、微博分析等。数据开发是指对爬取到的数据进行清洗、整理和存储,以便后续的数据分析和应用。微博分析则是对微博数据进行统计和分析,了解用户的行为和趋势,找出有价值的信息。 对于爬取微博数据,可以通过可视化的方式呈现,以更直观地展示数据的分布和变化趋势。可视化可以使用各种Python的数据可视化库,如matplotlib、seaborn等,制作各种图表、图像和地图等,提供更好的数据展示效果。 总结来说,通过Python编程语言中的爬虫技术,可以取得微博数据并进行数据开发、微博分析和可视化处理,从中获取有价值的信息。 ### 回答2: 取微博数据是指使用爬虫技术从微博平台上抓取用户的相关信息,通过获取微博内容、点赞数、转发数、评论数等数据,并进行可视化分析以及数据开发,以了解用户行为和趋势。 在这个过程中,可以使用Python编写爬虫程序来自动化地访问微博网站并获取所需数据。爬虫程序可以模拟用户登录微博,搜索关键词或用户,获取相关微博内容,并提取所需的数据信息。 通过爬取微博数据,可以进行数据开发,包括数据清洗、处理以及存储。数据清洗是指对原始数据进行去除噪声、格式转换、去重等操作,以保证数据的准确性和一致性。数据处理是指对清洗后的数据进行加工处理,如对文字进行分词、提取关键词等。数据存储则是将处理后的数据以合适的格式保存在数据库或文件中,以备后续使用。 除了数据开发,还可以进行微博数据的可视化分析。通过使用数据可视化工具和库,将微博数据转化为图表、地图、词云等可视化形式,从而更直观地展示数据的分布和趋势。通过分析微博数据可视化结果,可以发现用户关注的热点话题、用户行为模式等信息,为企业和个人提供决策参考。 总之,通过取微博数据并进行可视化分析以及数据开发,我们可以深入了解用户行为和趋势,为企业和个人提供更有针对性的决策和推广策略。同时,这也为数据分析领域的研究和应用提供了丰富的资源和实践案例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值