我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python 爬取微博热搜页面

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python 爬取微博热搜页面

前期准备:

fiddler 抓包工具
Python3.6
谷歌浏览器

分析:

1.清理浏览器缓存cookie以至于看到整个请求过程,因为Python代码开始请求的时候不带任何缓存。
2.不考虑过多的header参数,先请求一次,看看返回结果

图中第一个链接是无缓存cookie直接访问的,状态码为302进行了重定向,用返回值.url会得到该url后面会用到(headers里的Referer参数值)
2 ,3 链接没有用太大用处为第 4 个链接做铺垫但是都可以用固定参数可以不用访问

访问https://passport.weibo.com/visitor/genvisitor ,cookie为tid=__095,注意tid需要去掉转义字符‘\’,get传的参数有用的只有t也就是tid 其他都是固定值 、_rand是浮点随机数没啥具体的意义可以用Python的random.random()函数,需要导入random库,get传参使用params=,post传参用data=,不是随便都能用的

得到返回值 含有SUB 和SUBP参数的值
正好是访问最后一个链接也就是热搜榜需要的cookie的值
到此分析结束

代码:

import requests
import random
import re
import urllib3
#警告忽略
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
class Wb():
    def __init__(self):
        #利用session保持回话
        self.session=requests.Session()
        #清理headers字典,不然update好像不会起作用
        self.session.headers.clear()

        self.header={
            "Host": "weibo.com",
            "Connection": "keep-alive",
            "Upgrade-Insecure-Requests": "1",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) "
                          "AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/86.0.4240.198 Safari/537.36",
            "Accept": "text/html,application/xhtml+xml,application/xml;"
                      "q=0.9,image/avif,image/webp,image/apng,**",
            "Origin": "https://passport.weibo.com",
            "Sec-Fetch-Site": "same-origin",
            "Sec-Fetch-Mode": "cors",
            "Sec-Fetch-Dest": "empty",
            "Referer": response.url,
        }
        self.session.headers.update(header1)
        response1=self.session.post(url="https://passport.weibo.com/visitor/genvisitor"
                                    ,data=data1,proxies=self.fiddler_proxies,verify=False)
        #利用正则表达式解析tid参数的值
        t=re.search('{"tid":"(.*)","new_tid"',response1.text).groups()[0]
        data2={
            "a":"incarnate",
            "t":t.replace("\\",""),
            "w": "2",
            "c": "095",
            "gc":"",
            "cb":"cross_domain",
            "from":"weibo",
            "_rand":random.random()
        }
        header2={
            "Sec-Fetch-Mode": "no-cors",
            "Sec-Fetch-Dest": "script",
            "Cookie":"tid="+t.replace("\\","")+"__095"
        }
        self.session.headers.update(header2)
        response2 = self.session.get(url="https://passport.weibo.com/visitor/visitor",
                                     params=data2,proxies=self.fiddler_proxies,verify=False)
        #从返回值中获取cookie字典
        cookie = requests.utils.dict_from_cookiejar(response2.cookies)


        header3={
            "Cookie":"SUB="+cookie["SUB"]+";"+"SUBP="+cookie["SUBP"],
            "Host": "s.weibo.com",
            "Upgrade-Insecure-Requests": "1"

        }
        self.session.headers.update(header3)
        response3=self.session.get(url="https://s.weibo.com/top/summary",
                                   proxies=self.fiddler_proxies,verify=False)
        # print(response3.text)


if __name__ == '__main__':
    wb=Wb()
    wb.get_top_summary()

至此只能得到原始的html页面,想要进一步操作需要在HTML里面提取有用的数据。。。。。。
爬虫初期需要更多的是耐心

到此这篇关于Python 爬取微博热搜页面的文章就介绍到这了,更多相关Python 爬取微博热搜页面内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python 爬取微博热搜页面

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python爬虫怎么爬取微博热搜

这篇文章主要介绍python爬虫怎么爬取微博热搜,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;4.twiste
2023-06-14

python如何爬取微博热搜存入Mysql

这篇文章主要介绍了python如何爬取微博热搜存入Mysql,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Python主要用来做什么Python主要应用于:1、Web开发;2
2023-06-14

使用python怎么爬取微博的热搜数据

使用python怎么爬取微博的热搜数据?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。主要用到requests和bf4两个库将获得的信息保存在d://hotsea
2023-06-06

使用Python怎么爬取微博热搜关键词

今天就跟大家聊聊有关使用Python怎么爬取微博热搜关键词,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和
2023-06-14

python 爬取新浪微博信息

新浪微博爬取的话需要设计到登录,这里我没有模拟登录,而是使用cookie进行爬取。获取cookie:代码:#-*-coding:utf8-*-from bs4 import BeautifulSoupimport requestsimpor
2023-01-31

python爬虫如何爬取微博粉丝数据

这篇文章主要介绍了python爬虫如何爬取微博粉丝数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具,P
2023-06-14

使用python怎么爬取微博评论

今天就跟大家聊聊有关使用python怎么爬取微博评论,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端
2023-06-14

python爬取微博图片数据存到Mysq

本人长期出售超大量微博数据、旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com。同时欢迎加入社交媒体数据交流群:99918768  由于硬件等各种原因需要把大概170多万2t左右
2023-01-31

爬取博客园首页并定时发送到微信

应女朋友要求,为了能及时掌握技术动向,特意写了这个爬虫,每天定时爬取博客园首页并发送至微信。环境:Python3.4第三方库Requests:向服务器发送请求BeautifulSoup4:解析Htmlwxpy:微信接口Schedule:定时
2023-01-31

Python怎么实现微博动态图片爬取

本篇内容主要讲解“Python怎么实现微博动态图片爬取”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现微博动态图片爬取”吧!我们找到微博在浏览器上面用于手机端的调试的APL,如
2023-06-29

怎么用Python实现爬取百度热搜信息

小编给大家分享一下怎么用Python实现爬取百度热搜信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言何为爬虫,其实就是利用计算机模拟人对网页的操作例如 模拟人类浏览购物网站使用爬虫前一定要看目标网站可刑不可刑 :-)
2023-06-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录