1.分析网页结构

网页链接如下:https://v6.bang.weibo.com/czv/domainlist?date=202103&period_type=month

可使用选择器提取button标签中share-data中信息

r = requests.get("https://v6.bang.weibo.com/czv/domainlist?date=%s&period_type=month" % date)
soup = BeautifulSoup(r.text)
items = soup.select("button.top-follow-btn.following-btn")try:item.attrs["data-type"]except:dic = {}data_json = json.loads(item.attrs["share-data"])dic["rank"] = data_json["rank"]dic["uid"] = data_json["uid"]dic["screen_name"] = data_json["screen_name"]data_top_100.append(dic)

从20之后数据通过ajax的post请求获取,表单信息如下

url = "https://v6.bang.weibo.com/aj/newczv/rank"
for j in range(2, 6):data = {}data['page'] = str(j)data['show_rank'] = str(j * 20 - 20)data['period_type'] = 'month'data['field_id'] = '1001'data['dt'] = '202103'r = requests.post(url, headers=headers_ajax, data=data).json()rankData = r["data"]["rankData"]for i in rankData:dic = {}dic["rank"] = rankData[i]["rank"]dic["uid"] = rankData[i]["uid"]dic["screen_name"] = rankData[i]["screen_name"]data_top_100.append(dic)

2.完整网页代码如下

from bs4 import BeautifulSoup
import requests
import json
import pandas as pd
import redef get_top_100(date):data_top_100 = []headers_ajax = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0','Accept': 'application/json, text/javascript, */*; q=0.01','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','X-Requested-With': 'XMLHttpRequest','Origin': 'https://v6.bang.weibo.com','Connection': 'keep-alive','Referer': 'https://v6.bang.weibo.com/czv/domainlist?date=202103&period_type=month',}r = requests.get("https://v6.bang.weibo.com/czv/domainlist?date=%s&period_type=month" % date)soup = BeautifulSoup(r.text)items = soup.select("button.top-follow-btn.following-btn")for item in items:try:item.attrs["data-type"]except:dic = {}data_json = json.loads(item.attrs["share-data"])dic["rank"] = data_json["rank"]dic["uid"] = data_json["uid"]dic["screen_name"] = data_json["screen_name"]data_top_100.append(dic)url = "https://v6.bang.weibo.com/aj/newczv/rank"for j in range(2, 6):data = {}data['page'] = str(j)data['show_rank'] = str(j * 20 - 20)data['period_type'] = 'month'data['field_id'] = '1001'data['dt'] = '202103'r = requests.post(url, headers=headers_ajax, data=data).json()rankData = r["data"]["rankData"]for i in rankData:dic = {}dic["rank"] = rankData[i]["rank"]dic["uid"] = rankData[i]["uid"]dic["screen_name"] = rankData[i]["screen_name"]data_top_100.append(dic)return data_top_100if __name__ == '__main__':data = get_top_100("202103")df = pd.DataFrame(data)pd.DataFrame(df).to_csv('top_100.csv', encoding="utf_8_sig")

3.最终结果如下

—————————————————————————————2021-4-20修改——————————————————————————————

重新执行代码,发现SSL报错

参考链接:https://blog.csdn.net/qq_37049050/article/details/76649005

通过使用urllib库实现网页获取,代码重新可以运行

from bs4 import BeautifulSoup
import json
import pandas as pd
from urllib import request
import urllib.parsedef get_top_100(date):data_top_100 = []headers_ajax = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0','Accept': 'application/json, text/javascript, */*; q=0.01','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','X-Requested-With': 'XMLHttpRequest','Origin': 'https://v6.bang.weibo.com','Connection': 'keep-alive','Referer': 'https://v6.bang.weibo.com/czv/domainlist?date=202103&period_type=month',}url = "https://v6.bang.weibo.com/czv/domainlist?date=%s&period_type=month" % dater = urllib.request.urlopen(url)soup = BeautifulSoup(r.read())# r = requests.get("https://v6.bang.weibo.com/czv/domainlist?date=%s&period_type=month" % date)# soup = BeautifulSoup(r.text)items = soup.select("button.top-follow-btn.following-btn")for item in items:print(item)try:item.attrs["data-type"]except:dic = {}data_json = json.loads(item.attrs["share-data"])dic["rank"] = data_json["rank"]dic["uid"] = data_json["uid"]dic["screen_name"] = data_json["screen_name"]data_top_100.append(dic)print(dic)url = "https://v6.bang.weibo.com/aj/newczv/rank"for j in range(2, 6):data = {}data['page'] = str(j)data['show_rank'] = str(j * 20 - 20)data['period_type'] = 'month'data['field_id'] = '1001'data['dt'] = '202103'datas = urllib.parse.urlencode(data).encode('utf-8')a = request.Request(url, data=datas, headers=headers_ajax)r = request.urlopen(a).read().decode('utf-8')r = json.loads(r)# r = requests.post(url, headers=headers_ajax, data=data).json()rankData = r["data"]["rankData"]for i in rankData:dic = {}dic["rank"] = rankData[i]["rank"]dic["uid"] = rankData[i]["uid"]dic["screen_name"] = rankData[i]["screen_name"]data_top_100.append(dic)return data_top_100if __name__ == '__main__':data = get_top_100("202103")df = pd.DataFrame(data)pd.DataFrame(df).to_csv('top_100.csv', encoding="utf_8_sig")

微博数据爬虫——V影响力榜top100用户(一)相关推荐

  1. python爬微博数据合法吗_Python 免登录微博数据爬虫(仅研究使用)

    微博数据是非常有价值的数据,这些数据可以用作我们进行一些系统开发时的数据源, 比如前段时间发过的:Python 短文本识别个体是否有自杀倾向,在此文中,我们使用微博绝望树洞的数据,利用SVM做了一个简 ...

  2. 网易微专业python数据分析统计服_40套大数据云计算高级实战精品,数据分析,数据仓库,数据爬虫,项目实战,用户画像, ......

    40套大数据云计算高级实战精品,数据分析,数据仓库,数据爬虫,项目实战,用户画像,日志分析,Hadoop,Flink,Spark,Kafka,Storm,Docker,ElaticStack等视频教程 ...

  3. 微博数据爬虫——获取特定ID的粉丝和关注(二)

    注意:近期发现使用requests库访问微博数据出现ssl error错误,而使用urllib库访问则不会出现错误 功能:给定特定微博用户ID,获取微博用户的粉丝和关注 1.通过o_id获取p_id ...

  4. python爬虫 起点月票榜TOP100

    目的:学习正则表达式 过程中遇到的问题: item[1]后面忘记写逗号,导致item[2]执行时语法错误: RE中引用的字符串中有"|",被优先识别为"或",导 ...

  5. 微博数据爬虫——获取特定ID的热门转发用户列表(五)

    前言:由于微博网页采用动态加载方式,只能获取到js脚本,不能使用beautifulsoup解析,需要使用正则匹配获取信息 1.获取用户热门帖子转发地址 如下Kb4cwauSp为转发地址的关键参数 使用 ...

  6. 微博数据爬虫——获取用户微博相关信息(四)

    任务:给定u_id,获取用户每条微博的mid.发布时间.照片数.@数.链接数 1.获取微博信息 查看网页源代码,发现数据保存在js中 利用正则匹配可以实现获取单条微博全部信息 add = urllib ...

  7. 微博数据爬虫——获取用户基本信息(三)

    目标:获取微博用户的基本信息,如关注数.粉丝数.微博数量.注册时间 首先获取page_id 使用正则匹配获取 add = urllib.request.Request(url="https: ...

  8. python微博爬虫分析_python爬取和分析新浪微博(一):scrapy构建新浪微博榜单、博主及微博信息爬虫...

    1. 爬虫项目介绍 爬虫首先基于python scrapy 框架,使用了随机用户代理和IP代理等反爬技巧,将爬取到的微博领域数据,各领域榜单博主信息和博主的微博信息分别存入的mysql数据库对应的表格 ...

  9. 爬虫易烊千玺影响力榜单(利用浏览器驱动的方法)

    追星一族如何通过榜单分析自己爱豆的"江湖地位"呢? 又如何通过数据找到其与竞争对手间的差距呢? 接下来,我以易烊千玺为例,爬取明星影响力榜单数据. 爬虫明星影响力榜 一.步骤描述: ...

最新文章

  1. 使用帮助   history 用法   echo输出闪烁作业
  2. Xamarin XAML语言教程构建ControlTemplate控件模板
  3. 趣谈网络协议笔记-二(第十讲)
  4. 安装配置 radicale
  5. vue中下载excel的使用,后端链接两种情况,一个是链接,一个是文件流
  6. C#操作IIS完整解析
  7. 如何实现一平台多系统_自动化设备数据采集系统如何实现
  8. .Net MVC控制器中进行页面跳转并传递多个参数
  9. BC26连接阿里云,MQTT协议,AT流程和STM32代码实现
  10. 越狱有什么好处?越狱的优点和缺点
  11. 武汉科技大学计算机实验预约系统,实验室与设备管理处
  12. 西门子1500和300哪个贵_西门子s71500与s7300的区别
  13. python 文字识别 准确率_关于OCR图片文本检测、推荐一个 基于深度学习的Python 库!...
  14. msib450i gaming plus ac 开机vga长亮
  15. 凯撒密码C语言去掉空格字符,凯撒密码C语言实现
  16. 苹果切图换算android,iOS、Android 开发单位换算及 UI 切图要求
  17. SVN conflict的解决办法
  18. Nginx运维之一 反向代理、动静分离、负载均衡
  19. 谷歌亚马逊或遭英国监管;昔日“大数据第一股”面临退市;特斯拉辅助驾驶系统索赔案胜诉丨每日大事件...
  20. BAT 批处理脚本 教程

热门文章

  1. 【机械仿真】基于matlab打桩机运动学仿真【含Matlab源码 2101期】
  2. UL1007 UL1015与AWG
  3. Android微信App 分享功能调整,Android 微信SDK分享功能(1)
  4. 如果禅道忘记了管理员密码怎么拯救
  5. 为什么选择香港虚拟主机?
  6. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(八)-RCE漏洞
  7. ​邦基科技上交所上市:市值42亿 王由成家族色彩浓厚
  8. matlab实现PS算法之颜色变换、高反差保留、染色玻璃、碎片
  9. Python 基础部分(三)
  10. JVM 上篇(4):虚拟机栈