微博数据处理——获取广告用户数据集(三)
任务:需要获取广告用户候选的数据集
实现思路:
1.在微博话题中筛选含广告用户较多的话题
2.使用python爬虫技术获取话题用户账号
3.获取用户行为信息,并进行手工标注
1.筛选广告话题
通过对微博的使用,发现购物分享类话题广告用户较多
话题链接如下:https://weibo.com/p/100808ad1339d43994fdc06618aa28e5ec38f1/super_index
2.获取广告用户
通过对网页结构分析可知
每一页加载时初始加载一次,动态加载两次
动态加载时调用ajax进行加载,主要参数如下
pagebar:为动态加载时参数(0或1)
page:当前页数
pre_page:和当前页数值相同
current_page:当前的块页,第一页动态加载的第一块值为1,第二块为2;第二页动态加载的第一块值为4,第二块值为5
since_id:不知道什么id含义,但可以通过上面网页正则提取获得
完整代码如下所示:
import json
from urllib import request
import urllib.parse
import config
import reheaders = config.get_headers()
data = []
for page_num in range(1,21):print("第%d页"%page_num)print("第-1块")try:add = urllib.request.Request(url='https://weibo.com/p/100808ad1339d43994fdc06618aa28e5ec38f1/super_index?page=%d' % page_num,headers=headers)r = urllib.request.urlopen(url=add, timeout=10).read().decode('utf-8')forums = re.findall(r'<div tbinfo=\\"ouid=(\d*)', r)except:continuedata.extend(forums)for forum in forums:print(forum)url_a = re.findall(r'(tab=super_index¤t_page=\d+&since_id=\d+)', r)[0]for pagebar_num in range(0,2):print("第%d块" % pagebar_num)url = "https://weibo.com/p/aj/v6/mblog/mbloglist?domain=100808&pagebar=%d&pl_name=Pl_Core_MixedFeed__262&id=100808ad1339d43994fdc06618aa28e5ec38f1&feed_type=1&page=%d&pre_page=%d" \% (pagebar_num,page_num,page_num)url = url + "&" + url_aadd = urllib.request.Request(url=url,headers=headers)r = urllib.request.urlopen(url=add, timeout=10).read().decode('utf-8')forums = re.findall(r'<div tbinfo=\\"ouid=(\d*)', r)data.extend(forums)for forum in forums:print(forum)try:url_a = re.findall(r'(tab=super_index¤t_page=\d+&since_id=\d+)', r)[0]except:url_a = ""print(len(data))
data = list(set(data))
print(len(data))
print(json.dumps(data, ensure_ascii=False, indent=4))
json_f = open("../users_data/advert_user_data/adverts_user.json", "w")
json.dump(data, json_f, indent=4)
3.获取用户信息
通过调用此前封装好的函数实现数据的获取
f = open("../users_data/advert_user_data/adverts_user.json", "r")
str = f.read()
data = json.loads(str)
data_all = []
for uid in data:print(uid)dic_uid = {}dic_uid["uid"] = uidget_user_info.get_user_info(uid, dic_uid)get_user_action.get_user_action(uid,dic_uid)data_all.append(dic_uid)print(json.dumps(dic_uid, ensure_ascii=False, indent=4))json_f = open("../users_data/advert_user_data/dic_marked_init.json", "w")
json.dump(data_all, json_f, indent=4)
获取的原始广告用户如下所示
4.标注广告用户
使用selenium实现自动化访问网页并进行标注
browser = webdriver.Firefox()
# 获取 selenium cookies方法
# browser.get("https://weibo.com/u/2828585100")
# input()
# browser.get("https://weibo.com/u/2828585100")
# print(browser.get_cookies())
# 添加cookies
cookies = []
browser.get("https://weibo.com/337558589?is_all=1")
browser.delete_all_cookies()
for cookie in cookies:browser.add_cookie(cookie)
# browser.get("https://weibo.com/337558589?is_all=1")f = open("../users_data/advert_user_data/dic_marked_init.json", "r")
str = f.read()
data = json.loads(str)
data_all = []
for item in data:uid = item["uid"]browser.get("https://weibo.com/u/%s?is_all=1" % uid)mark_advert = input()item["mark_advert"] = mark_advertdata_all.append(item)json_f = open("../users_data/advert_user_data/dic_marked_final.json", "w")
json.dump(data_all, json_f, indent=4)
获取最终标记好的数据如下
其中增加了标记的值,成功实现广告用户数据集的获取
微博数据处理——获取广告用户数据集(三)相关推荐
- 微博数据处理——获取僵尸用户数据集(一)
思路: 1.手工查找一些僵尸用户 2.对僵尸用户的关注.粉丝列表进行多层遍历获取大量候选用户集 3.手工标注僵尸用户 技术难点在于第二步,工程量在第三步 1.手工查找僵尸用户 通过在微博手工查找,发现 ...
- ML之FE:数据处理—特征工程之数据集划分成训练集、验证集、测试集三部分简介、代码实现、案例应用之详细攻略
ML之FE:数据处理-特征工程之数据集划分成训练集.验证集.测试集三部分简介.代码实现.案例应用之详细攻略 目录 数据集划分成训练.验证.测试三种数据的简介 1.训练集.验证集的作用 2.验证数据集 ...
- 实现一个简易版的微博,包含 client 和 server 两部分,并实现四个基础功能:关注、取关、发微博、获取用户微博列表
const assert = require('assert'); const question = '实现一个简易版的微博,包含 client 和 server 两部分,并实现四个基础功能:关注.取 ...
- android 腾讯微博授权,5腾讯微博Android客户端开发获取请求用户授权Request Token.pdf...
腾讯微博Android客户端开发 博客:/coolszy Android Android 腾讯微博AAnnddrrooiidd客户端开发 RequestToken RequestToken --获取请 ...
- sina微博api:获取24小时内前20条用户的微博信息
package weibo4j.examples; import java.util.List; import weibo4j.Status; import weibo4j.Weibo; import ...
- HBase项目之谷粒微博:创建命名空间,微博内容表,用户关系表,微博收件箱表,发布微博内容,添加关注用户,移除(取关)用户,获取关注的人的微博内容,HBase实战项目
Hbase实战之谷粒微博 1 需求分析 1) 微博内容的浏览,数据库表设计 2) 用户社交体现:关注用户,取关用户 3) 拉取关注的人的微博内容 2 代码实现 2.1 代码设计总览: 1) 创建命名空 ...
- Spring MVC 实战:三种方式获取登录用户信息
前言 Web 项目中,维持用户登录状态的常用方式有三种,分别是 Cookie.Session.Token,不管哪种方案,都需要获取到用户信息供业务层使用. 由于获取用户信息与具体业务无关,因此在普通的 ...
- TokenInsight 对话首席——获取增量用户 公链崛起的关键之战
邀行业首席,谈市场现状,见趋势未来!本期<对话首席>线上活动于6月28日下午3点顺利举办. 本次<对话首席>特邀Contentos 联合创始人 Mick Tsai.Nebula ...
- 辛辛苦苦写了一个产品,如何获取种子用户?
产品运营从0到1:如何获取种子用户的系列文章,分为实操篇和理论篇. 实操篇分为上下两篇,上篇主要是针对产品.人群和渠三个方面来写:下篇将会针对文案.活动.优化三个方面来写. 理论篇将[从0到1]的一 ...
最新文章
- js生成随机数函数,倒计时函数
- swift和OC - 拆分数组 和 拆分字符串
- Javascript:charCodeAt()方法及示例
- 今年最新整理的《高频Java面试题集合》,聪明人已经收藏了!
- python使用教程pandas-「Python」pandas入门教程
- 国外centos服务器配置epel源
- Spring Cloud教程– Spring Cloud Config Server简介
- Linux系统下与终端相关的命令
- 软件设计师冲刺笔记(一)
- alert弹框里弹一个表格_Python学习第十三弹 输入与输出
- 【java笔记】IO流(1):IO流概述,字节输出/输入流读写文件
- linux centos erlang,CentOS 7.7安装Erlang和Elixir
- linux多队列网卡中断绑定,网卡中断及多队列 - osc_mzx9t9jk的个人空间 - OSCHINA - 中文开源技术交流社区...
- 磁场消灭癌细胞,是一种新的抗癌方案吗?
- AI燃到爆!中关村人工智能产业论坛十位大咖演讲干货
- GB/T 8170-2008 数值修约规则与极限数值的表示和判定
- 计算机专业的短期计划范文,制定计算机学习计划范文3篇
- 设置linux服务器同步时间
- Linux系统的信号详解
- 聊聊如何度过寒冬(公司篇)