任务:给定u_id,获取用户每条微博的mid、发布时间、照片数、@数、链接数
1.获取微博信息
查看网页源代码,发现数据保存在js中
利用正则匹配可以实现获取单条微博全部信息
add = urllib.request.Request(url="https://weibo.com/u/%s?is_all=1" % o_id, headers=headers)
r = urllib.request.urlopen(url=add, timeout=10).read().decode('utf-8')
page_id = re.findall(r'\$CONFIG\[\'page_id\']=\'(\d+)\'',r)[0]
domain = re.findall(r'\$CONFIG\[\'domain\']=\'(\d+)\'',r)[0]
forums = re.findall(r'<div action-data=\\"cur_visible=0\\" (.*?)<div node-type=\\"feed_list_repeat\\"', r)
由于微博使用动态加载技术,一次刷新不会将所有数据显示,分析网络,可发现ajax交互接口
domain:用户所在域
id:用户的page_id
page:指当前微博页数
pre_page:当为0时为初始时的网页数据,为1时为后续动态加载网页数据
pagebar:指数据块,为0或1,共动态加载两次
is_all:当为1时表示显示全部,默认为0显示热门
使用如下方法获取:
url = "https://weibo.com/p/aj/v6/mblog/mbloglist?domain=%s&id=%s&page=1&pre_page=1&pagebar=%d&is_all=1" % (domain,page_id,i)
add = urllib.request.Request(url=url, headers=headers)
r = urllib.request.urlopen(url=add, timeout=10).read