python爬取微博内容,python爬取动态网页图片
这篇文章主要为大家介绍了如何利用计算机编程语言中的爬虫实现微博动态图片的爬取,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试
由于微博的网页端有反爬虫,需要登录,所以我们换个思路,曲线救国。
我们找到微博在浏览器上面用于手机端的调试的APL,如何找到呢?
我这边直接附上微博的手机端的地址:https://m.weibo.cn/
1.模拟搜索用户
搜索一个用户获取到的api:
https://m.weibo.cn/api/container/getIndex?containerid=100103type=1q=半半子page_type=searchall
1.1 对美国石油学会(美国石油协会)内参数进行处理
containerid=100103type=1q=半半子——容器id=100103类型=1 & ampq=半半子_
这个参数需要提前转码,否则无法获取数据
1.2 对用户名进行判断,通过后提取用户界面设计(用户界面设计的缩写)
2.获取more参数
得到
API : https://m.weibo.cn/profile/info?uid=2830125342
2.1 提取并处理更多参数
3.循环提取图片id
得到
API : https://m.weibo.cn/api/container/getIndex?container id=2304132830125342 _-_ WEIBO _ SECOND _ PROFILE _ WEIBO page _ type=03 page=1
3.1 提取图片id——pic_id
3.2 获取发送图片用户
3.3 根据动态创建时间生成用户唯一识别码
4.下载图片
我们从浏览器抓包中就会获取到后台服务器发给浏览器的图片链接
https://wx2.sinaimg.cn/large/pic_id.jpg
浏览器打开这个链接就可以直接下载图片
爬取完整代码:
导入操作系统
导入系统
导入时间
从urllib.parse导入引号
导入请求
标题={
用户代理“:”Mozilla/5.0(Windows NT 10.0;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/95。0 .4638 .69 Safari/537.36
}
定义时间到字符串:
ti=time.strptime(c_at, %a %b %d %H:%M:%S 0800 %Y )
time _ str=时间。strftime( % Y % M % d % H % M % S ,ti)
返回时间_字符串
# 1.搜索用户,获取用户界面设计(用户界面设计的缩写)
# 2.通过用户界面设计(用户界面设计的缩写)获取空间动态关键参数
# 3.获取动态内容
# 4.提取图片参数
# 5.下载图片
# 1.搜索用户,获取用户界面设计(用户界面设计的缩写)
#=========用户名=========
# 输入不同的用户名可切换下载的用户图片
# 用户名需要完全匹配
name=半半子_
#=========================
con_id=f100103type=1q={name}
# 这个条件需要转码
con_id=quote(con_id, utf-8 )
user _ URL=f https://m。微博。 cn/API/container/getIndex?容器id={ con _ id } page _ type=search all
user _ JSON=请求。get(URL=user _ URL,headers=headers).json()
user _ cards=user _ JSON[ data ][ cards ]
对于范围内的卡号(len(用户卡)):
如果用户卡[卡号]:中有"移动日志"
if user _ cards[card _ num][ mblog ][ user ][ screen _ name ]==name :
打印(f 正在获取{姓名}的空间)
# 2.通过用户界面设计(用户界面设计的缩写)获取空间动态关键参数
user _ id=user _ cards[card _ num][ mblog ][ user ][ id ]
info _ URL=f https://m。微博。cn/profile/info?uid={user_id}
info _ JSON=请求。get(URL=info _ URL,headers=headers).json()
more _ card=info _ JSON[ data ][ more ].split(/)[-1]
破裂
文件名=微博
如果不是os.path.exists(文件名):
os.mkdir(文件名)
如果len(更多_卡)==0:
sys.exit()
page_type=03
page=0
而True:
# 3.获取动态内容
页面=1
URL=f https://m。微博。cn/API/container/getIndex?容器id={ more _ card } page _ type={ page _ type } page={ page }
param=requests.get(url=url,headers=headers).json()
cards=param[data][cards]
打印(f 第{第页}页)
适用于范围内的我(信用卡):
卡片=卡片[我]
如果卡[card_type]!=9:
继续
mb_log=card[mblog]
# 4.提取图片参数
# 获取本人的图片
pic_ids=mb_log[pic_ids]
用户名=mb_log[用户][屏幕名]
created _ at=MB _ log[ created _ at ]
如果len(pic_ids)==0:
# 获取转发的图片
如果"转发状态"不在mb_log:中
继续
如果"图片标识"不在MB _ log[ retweeted _ status ]:中
继续
pic _ ids=MB _ log[ retweeted _ status ][ pic _ ids ]
user _ name=MB _ log[ retweed _ status ][ user ][ screen _ name ]
created _ at=MB _ log[ retweeted _ status ][ created _ at ]
时间名称=时间到字符串(创建时间)
pic_num=1
print(f ========={用户名}=======)
# 5.下载图片
对于pic_ids:中的图片_id
pic _ URL=f https://wx2。新浪img。 cn/large/{ pic _ id } . jpg
pic_data=requests.get(pic_url,headers)
# 文件名用户名_日期(年月日时分秒)_编号。使用联合图象专家组文件交换格式存储的编码图像文件扩展名
# 例:半半子__20220212120146_1.jpg
打开时(f"{文件名}/{用户名} _ {时间名} _ {照片号}。jpg ,mode=wb )作为f:
f.write(pic_data.content)
打印(f 正在下载:{图片id} .jpg’)
pic_num=1
时间。睡眠(2)
到此这篇关于计算机编程语言实现微博动态图片爬取详解的文章就介绍到这了,更多相关计算机编程语言微博图片爬取内容请搜索盛行信息技术软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行信息技术软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。