任务:需要获取广告用户候选的数据集

实现思路:

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&current_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&current_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. 微博数据处理——获取僵尸用户数据集(一)

    思路: 1.手工查找一些僵尸用户 2.对僵尸用户的关注.粉丝列表进行多层遍历获取大量候选用户集 3.手工标注僵尸用户 技术难点在于第二步,工程量在第三步 1.手工查找僵尸用户 通过在微博手工查找,发现 ...

  2. ML之FE:数据处理—特征工程之数据集划分成训练集、验证集、测试集三部分简介、代码实现、案例应用之详细攻略

    ML之FE:数据处理-特征工程之数据集划分成训练集.验证集.测试集三部分简介.代码实现.案例应用之详细攻略 目录 数据集划分成训练.验证.测试三种数据的简介 1.训练集.验证集的作用 2.验证数据集 ...

  3. 实现一个简易版的微博,包含 client 和 server 两部分,并实现四个基础功能:关注、取关、发微博、获取用户微博列表

    const assert = require('assert'); const question = '实现一个简易版的微博,包含 client 和 server 两部分,并实现四个基础功能:关注.取 ...

  4. android 腾讯微博授权,5腾讯微博Android客户端开发获取请求用户授权Request Token.pdf...

    腾讯微博Android客户端开发 博客:/coolszy Android Android 腾讯微博AAnnddrrooiidd客户端开发 RequestToken RequestToken --获取请 ...

  5. sina微博api:获取24小时内前20条用户的微博信息

    package weibo4j.examples; import java.util.List; import weibo4j.Status; import weibo4j.Weibo; import ...

  6. HBase项目之谷粒微博:创建命名空间,微博内容表,用户关系表,微博收件箱表,发布微博内容,添加关注用户,移除(取关)用户,获取关注的人的微博内容,HBase实战项目

    Hbase实战之谷粒微博 1 需求分析 1) 微博内容的浏览,数据库表设计 2) 用户社交体现:关注用户,取关用户 3) 拉取关注的人的微博内容 2 代码实现 2.1 代码设计总览: 1) 创建命名空 ...

  7. Spring MVC 实战:三种方式获取登录用户信息

    前言 Web 项目中,维持用户登录状态的常用方式有三种,分别是 Cookie.Session.Token,不管哪种方案,都需要获取到用户信息供业务层使用. 由于获取用户信息与具体业务无关,因此在普通的 ...

  8. TokenInsight 对话首席——获取增量用户 公链崛起的关键之战

    邀行业首席,谈市场现状,见趋势未来!本期<对话首席>线上活动于6月28日下午3点顺利举办. 本次<对话首席>特邀Contentos 联合创始人 Mick Tsai.Nebula ...

  9. 辛辛苦苦写了一个产品,如何获取种子用户?

    产品运营从0到1:如何获取种子用户的系列文章,分为实操篇和理论篇. 实操篇分为上下两篇,上篇主要是针对产品.人群和渠三个方面来写:下篇将会针对文案.活动.优化三个方面来写.​ 理论篇将[从0到1]的一 ...

最新文章

  1. js生成随机数函数,倒计时函数
  2. swift和OC - 拆分数组 和 拆分字符串
  3. Javascript:charCodeAt()方法及示例
  4. 今年最新整理的《高频Java面试题集合》,聪明人已经收藏了!
  5. python使用教程pandas-「Python」pandas入门教程
  6. 国外centos服务器配置epel源
  7. Spring Cloud教程– Spring Cloud Config Server简介
  8. Linux系统下与终端相关的命令
  9. 软件设计师冲刺笔记(一)
  10. alert弹框里弹一个表格_Python学习第十三弹 输入与输出
  11. 【java笔记】IO流(1):IO流概述,字节输出/输入流读写文件
  12. linux centos erlang,CentOS 7.7安装Erlang和Elixir
  13. linux多队列网卡中断绑定,网卡中断及多队列 - osc_mzx9t9jk的个人空间 - OSCHINA - 中文开源技术交流社区...
  14. 磁场消灭癌细胞,是一种新的抗癌方案吗?
  15. AI燃到爆!中关村人工智能产业论坛十位大咖演讲干货
  16. GB/T 8170-2008 数值修约规则与极限数值的表示和判定
  17. 计算机专业的短期计划范文,制定计算机学习计划范文3篇
  18. 设置linux服务器同步时间
  19. Linux系统的信号详解
  20. 聊聊如何度过寒冬(公司篇)

热门文章

  1. Android 仿淘宝2017添加地址
  2. Android动画全总结
  3. 关于WEBQQ的实现(一)
  4. MySQL-数据库技术及应用
  5. js页面跳转(链接,超链接)
  6. dcloud如何苹果ios系统真机测试-HBuilderX真机运行ios测试
  7. 银联董事长邵伏军:最担心数字货币普及后,支付清算机构可能不复存在
  8. 应用场景四:西门子PLC连接ModbusRTU从站设备解决方案
  9. Sparse R-CNN 论文精读
  10. 复利mysql_0414-复利计算再升级