python+selenium 爬取微博(网页版)并解决账号密码登录、短信验证

2023-11-07

前言

为什么爬网页版微博

网页端的微博比移动端的难爬一点,但是来网页端是因为这里可以使用高级搜索功能,它不同于普通搜索的是它可以选定发布时间和发布地点,把博文和这些爬下来可以用来做更多更全面的数据分析。

为什么使用selenium

去微博搜索某个关键词,会发现第一页的内容下拉到底后,微博会提示登录才能看到之后的页面的内容,点击登录之后它就会分页显示,最多显示到50页。
我一开始想着,那我只要分析微博的网址构造,然后用requests去打开后面页数的网址不就可以了?比如去用高级搜索功能搜索:
在这里插入图片描述
https://s.weibo.com/weibo/%25E6%2596%25B0%25E8%2583%25BD%25E6%25BA%2590%25E6%25B1%25BD%25E8%25BD%25A6%25E6%2594%25BF%25E7%25AD%2596?q=%E6%96%B0%E8%83%BD%E6%BA%90&region=custom:44:1000&typeall=1&suball=1&timescope=custom:2020-12-08:2020-12-16&Refer=g
这是上图的搜索结果的网址,不难发现:
q后面的是关键词(经过二次编码后变成了一长串的东西);
region=custom:XX:1000,这里的XX是省份的代码;
typeall=1&suball=1 ,这两是“类型”和“包含”选项;
timescope=custom:2020-12-08:2020-12-16就是时间段。

登录后查看第二页的网址:
https://s.weibo.com/weibo/%25E6%2596%25B0%25E8%2583%25BD%25E6%25BA%2590%25E6%25B1%25BD%25E8%25BD%25A6%25E6%2594%25BF%25E7%25AD%2596?q=%E6%96%B0%E8%83%BD%E6%BA%90&region=custom:44:1000&typeall=1&suball=1&timescope=custom:2020-12-08:2020-12-16&Refer=g&page=2
其他都相同,就最后多了个&page=2。然后看第三页也是&page=3。再然后再第一页的最后面页加个&page=1,也能正常打开。
至此,我们就找到了网址的构造规律了。

接下来,设置变量分别代表:搜索关键词、省份对应的数字(这个得自己打开微博一个个去试)、起始年、起始月、起始日、终点年、终点月、终点日、页码。
然后通过改变变量就可以访问所有相应的网页了。
(ps:因为怕50页显示不了太多,这里起始终止的年和月变量我就用同一个了)

index="小姐姐"
sheng=34
year=2020
month=1
day1=1
day2=30
page=1

url = "https://s.weibo.com/weibo?q={}&region=custom:{}:1000&typeall=1&suball=1&timescope=custom:{}-{}-{}:{}-{}-{}&Refer=g&page={}".format(index, sheng, year, month, day1, year, month, day2, page)

但是问题来了,发现爬虫只能爬下第一页的数据,第二页开始的都爬不了,为什么呢?这时你退出登录,然后再复制上面的第二页的网址去打开,你就发现打开不了,跳到了登录页面,微博还是要你登录才能访问之后的内容。
哦,所以现在我们需要去模拟微博登录。

怎么模拟微博登录

用selenium模拟浏览器操作。
网上的方法大多推荐用http请求、获取cookie这些,但说实话这些对新手不太友好。
selenium可能存在有一些缺点,但它也有它的优点,selenium做爬虫的好处就是简单直接(只需要知道简单的HTML和xpath的知识就够了),而且可以通过浏览器直接看到爬取的过程,出现错误很容易发现(这不比看pycharm下面一大串的报错信息强?)。
怎么操作详情往下看。

一、事前准备

谷歌浏览器、python3.7、pycharm(这些就先自己安装吧,这里就不给教程了)

二、Selenium安装

关于selenium

selenium是一个用于Web应用程序测试的工具,selenium测试直接运行再浏览器上,就像真正的用户在操作一样。(百度百科)
简单来说,selenium就是用来模拟用户操作浏览器。

安装步骤

  1. win+r,输入cmd,输入pip install selenium
  2. 下载ChromeDriver。
    找到对应的浏览器、版本下载。
    怎么查看谷歌浏览器的版本:打开谷歌浏览器,关闭按钮下面的三个点》帮助》关于Google Chrome,可以看到自己的版本。记下那串数字(比如我的是版本 87.0.4280.88)然后去下面的驱动下载网址找对应的就行。

Chrome驱动下载地址:http://npm.taobao.org/mirrors/chromedriver/

查看浏览器版本
找到对应版本点进去
windows系统(不管你是32还是64位)就是这个win32的。
在这里插入图片描述

  1. 下载完成后,需要做两件事:
    (1).将驱动放复制到浏览器根目录下;
    找到谷歌浏览器快捷方式,右键,打开文件位置,把下载的文件夹里面的那个东西粘贴进来(注意不能直接把下载的文件夹放进来,要放里面的chromedriver,下面的第二步也一样)
    在这里插入图片描述
    (2).将驱动复制到Python根目录下。
    可以打开pycharm,左边Project里面可以看到你的项目的路径,放那就行。
    在这里插入图片描述

  2. 测试环境是否搭建成功

from selenium import webdriver

browser = webdriver.Chrome()
browser.set_window_size(1000,800)
browser.get('https://www.baidu.com/')

运行后可以看到新开一个浏览器窗口并在几秒内打开了百度

三、selenium定位网页元素

先学一下selenium的基本操作吧。(可以先简单看看)

基本方法

定位的方法有很多,这里主要用以下两种方式:

find_element_by_id 使用id定位元素
find_element_by_xpath 使用xpath定位元素

以上方法可以定位到网页的第一个符合该定位条件的元素,但我们写爬虫有时候需要定位这类的所有元素(比如爬取当前页面所以微博的文本内容),所以需要用下面的find_elements方法(加个s就行)。具体加不加s根据实际情况决定。

find_elements_by_id 使用id定位所有元素
find_

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python+selenium 爬取微博(网页版)并解决账号密码登录、短信验证 的相关文章

随机推荐

  • 字节一面:HTTPS 会加密 URL 吗?

    有朋友在面试字节 被问到这个问题 HTTPS 会加密 URL 吗 答案是 会加密的 因为 URL 的信息都是保存在 HTTP Header 中的 而 HTTPS 是会对 HTTP Header HTTP Body 整个加密的 所以 URL
  • 分享一些让你目瞪口呆的Java代码技巧,收藏起来以后一定用的上

    导语 自从毕业后 今年已经是我工作的第 8 个年头了 我甚至都快忘记了到底是那年毕业的 从出来本人一直在做 Java 相关的工作 现在终于有时间坐下来 写一篇关于 Java 写法的一篇文章 来探讨一下如果你真的是一个 Java 程序员 那你
  • OpenWrt应用开发入门教程

    我的开发日志 目录 1 SDK生成的方法 2 SDK工具包安装 解压缩 设置环境变量 3 编译第1个C代码 4 编译Openwrt的IPK软件包 a 编译MQTT C Client依赖的openSSL b 编译MQTT C Client动态
  • 《深入理解JAVA虚拟机》第三章

    垃圾收集机制 简称GC 比Java诞生的早 GC要完成的三件事 那些内存需要回收 什么时候回收 怎么回收 判断一个对象是否存活简单的方法 在对象中加入一个引用计数器 当一个地方引用它时 计数器值加一 当引用失效时 计数器值减一 当计数器值为
  • 2020自动化测试岗位需求的7项必备技能(更新版)

    随着敏捷和DevOps等新时代项目开发方法逐渐取代旧的瀑布模型 测试需求在业界不断增长 测试人员现在正在与开发人员一起工作 自动化测试在许多方面极大地取代了手动测试 如果您是自动化测试领域的新手 刚雇用您的组织将期望您快速 开箱即用 并能够
  • 配置你的代理服务器(Ubuntu)这样平常就不用开魔法了

    打开终端 在 Ubuntu 中 您可以按下 Ctrl Alt T 组合键来打开终端 编辑 etc environment 文件 在终端中 输入以下命令来编辑 etc environment 文件 sudo gedit etc environ
  • 算法导论——插入排序——伪代码和Java实现

    第二章第一节 插入排序 我们首先介绍插入排序 相信大部分人都打过扑克牌 许多人喜欢发一张牌就拿一张牌到手上 并且按顺序来放好牌 开始时我们左手为空 牌在桌子上 然后我们每次从桌子上拿走一张牌并将它插入左手中的位置 为了找到一张牌的正确位置
  • Learun,一款专注于业务,不用写代码的框架

    其实还是很因为懒 才会有这个项目框架的产生 每次开启一个终端的小服务都要整理一次框架造成重复的 不必要的 缺乏创造性的劳动 SO 本着可以用 用着简单的原则就设计了这套敏捷开发框架 希望有需要的朋友可以看看 关心自己的业务规则即可 Lear
  • 深度学习中的随机梯度下降(SGD)简介

    随机梯度下降 Stochastic Gradient Descent SGD 是梯度下降算法的一个扩展 机器学习中反复出现的一个问题是好的泛化需要大的训练集 但大的训练集的计算代价也更大 机器学习算法中的代价函数通常可以分解成每个样本的代价
  • Python - python如何连接sql server数据库

    一 安装第三方模块 首先要下载名为 pymssql 的模块 然后import该模块 安装方法 1 第一种方法 按win r gt 输入cmd gt 输入以下命令即可 pip install pymssql 2 第二种方法 打开pycharm
  • 软件知识分类法(兼谈收入这事儿)

    好久没来 以此文章清清杂草吧 眼下比较常用的软件知识归类法是以关键字为导向的 但感觉这种分类法挺误人子弟的 比如 编程语言与程序设计 软件工程及软件方法学 软件项目管理 软件需求 UML 建模 极限编程 软件方法 软件工程 面向对象 软件质
  • 基于微前端qiankun的多页签缓存方案实践

    本文梳理了基于阿里开源微前端框架qiankun 实现多页签及子应用缓存的方案 同时还类比了多个不同方案之间的区别及优劣势 为使用微前端进行多页签开发的同学 提供一些参考 一 多页签是什么 我们常见的浏览器多页签 编辑器多页签 从产品角度来说
  • Pytorch入门之RNN

    看了花书上的RNN和莫凡python关于RNN的实战演练 现在来总结一下 主要分5部分 1 LSTM实现MNIST数据集分类 2 RNN实现三角函数的回归问题 3 LSTM实现三角函数的回归问题 4 深度循环神经网络 5 RNN实现语言模型
  • 2021-03-24

    java Script介绍 什么是js JavaScript是一种基于对象和事件驱动的 并具有安全性能的脚本语言 已经被广泛用于Web应用开发 常用来为网页添加各式各样的动态功能 为用户提供更流畅美观的浏览效果 通常JavaScript脚本
  • 【2022第十三届蓝桥杯】c/c++ 大学c组 解题报告

    大家好 我是小单同学 欢迎交流指正 今天上午蓝桥杯圆满落幕 准备了几个月的比赛也终于打完了 今年填空题变成了两道 同学们反映今年难度上升很大 小单也感觉今年难度较大hh 空了两道题 现在给大家分享一下本菜鸡的解题报告 供大家交流 仅供参考哈
  • jvm优化(二)JVM 内存大小设置

    Tomcat本身不能直接在计算机上运行 需要依赖于硬件基础之上的操作系统和一个Java虚拟机 Tomcat的内存溢出本质就是JVM内存溢出 所以在本文开始时 应该先对Java JVM有关内存方面的知识进行详细介绍 一 Java JVM内存介
  • [Pytorch使用] cuda的使用

    原文 torch cuda里 记录着当前默认device torch device cuda 指代当前默认device with torch cuda device 1 这样的region 会设置当前默认device torch devic
  • 【零基础】学python数据结构与算法笔记15-欧几里得、RSA

    文章目录 前言 95 欧几里得算法 96 RSA算法介绍 97 RSA算法测试 98 算法课程总结 总结 前言 学习python数据结构与算法 学习常用的算法 b站学习链接 95 欧几里得算法 求最大公约数 欧几里得算法 gcd a b g
  • OpenWrt下使用docker安装icloudpd实现iPhone照片备份私有云盘nas

    文章目录 一 背景与需求 二 部署方法 2 1 我的环境 2 2 准备工作 2 2 1 检查docker环境是否运行正常 2 2 2 查询宿主系统用户id和组id 2 2 3 规划挂载目录 2 2 4 编写启动参数 2 2 5 解决Open
  • python+selenium 爬取微博(网页版)并解决账号密码登录、短信验证

    使用python selenium 爬取微博 前言 为什么爬网页版微博 为什么使用selenium 怎么模拟微博登录 一 事前准备 二 Selenium安装 关于selenium 安装步骤 三 selenium定位网页元素 基本方法 详细使