python selenium学习之新浪微博

运用知识点

  1. 模拟登录
  2. 模拟鼠标事件
  3. 获取页面节点,解析

开始模拟登录:
第一步:实例化selenium对象

from selenium import webdriver
from selenium.webdriver import ChromeOptionsoption = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation']) #规避检测
bro = webdriver.Chrome(options=option)

第二步:定位到账号密码和登录按钮,并输入账号密码点击登录按钮
利用谷歌浏览器F12开发者工具,很容易定位到

同理定位到密码和登录标签,然后输入账号密码并点击登录按钮

bro.get('https://weibo.com/')
bro.maximize_window()
sleep(1)
bro.find_element_by_id('loginname').send_keys('XXXXXX')#账号
sleep(1)
bro.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[2]/div/input').send_keys('XXXXX')#密码
sleep(0.5)
bro.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[6]/a').click()#登录

第三步:
打开新浪微博准备登录,发现不管密码正不正确都会跳转到手机扫码登录的页面

这里有很多方法可是太复杂,我们直接让程序在这里停几秒,拿出手机扫码就行这样最简单(扫码之后让页面刷新一下)

sleep(10)
bro.refresh() #刷新页面

到这里就登录成功了
第四步:定位到搜索框直接搜索要找的博主名

#这个搜索框里本来是有内容的所以要先点击一下
bro.find_element_by_xpath('//*[@id="plc_top"]/div/div/div[2]/input').click()
bro.find_element_by_xpath('//*[@id="plc_top"]/div/div/div[2]/input').send_keys('XXXXX')# 博主名
bro.find_element_by_xpath('//*[@id="plc_top"]/div/div/div[2]/input').send_keys(Keys.ENTER)# 输入回车

会来到这个页面

同样定位到昵称的链接点击一下就行了,但是这里它就会新开一个窗口,所以要切换窗口视角到窗口

bro.find_element_by_xpath('//*[@id="pl_feedlist_index"]/div[1]/div[1]/div/div[1]/a').click()
bro.switch_to.window(bro.window_handles[-1])#切换窗口视角

定位到他主页的“他的相册”并点击就可以来到照片墙了,这里默认只显示一点点,需要模拟鼠标拖动往下的动作,拿到所有图片。
分析页面找到图片链接都在这里,可以用它的class属性定位到

# 定位到他主页的“他的相册”并点击
bro.find_element_by_xpath('//*[@id="Pl_Official_Nav__2"]/div/div/table//tr/td[2]/a').click()
sleep(3)
for i in range(120):  #模拟鼠标拖动往下的动作sleep(0.5)bro.execute_script('window.scrollBy(0,300)', '')#模拟鼠标拖动往下的动作
sleep(1)
srcs = bro.find_elements_by_class_name('photo_pict') #等待加载完毕 拿到所有图片链接的节点列表

遍历节点列表拿到所有的图片链接

for src in srcs:gugu = src.get_attribute('src')

这里拿到的图片链接都是小图:https://wxt.sinaimg.cn/thumb300/a89b2d04gy1gl5a9m8bblj20go0go3yv.jpg?tags=%5B%5D
随便点开照片墙的一张图片等到大图,右键点击复制图片地址:https://wx1.sinaimg.cn/mw1024/a89b2d04gy1gl5a9m8bblj20go0go3yv.jpg
对比发现只有”thumb300“ 和”mw1024“不同,对链接中的thumb300经行替换就行了

gugugu = gugu.replace('thumb300', 'mw1024')

第五步:设置保存路径,requests.get().content拿到二进制数据并保存就ok了
整体代码:

j = 1 #计数
for src in srcs:gugu = src.get_attribute('src') #拿到图片链接gugugu = gugu.replace('thumb300', 'mw1024') #替换链接中的字符,得到大图链接name = gugugu.split('/')[-1][13:20] # 随便起个图片名path = './微博图片/' + name + '.jpg' #保存路径, 保存到当前目录下的微博图片文件夹中re = requests.get(url=gugugu, headers=headers).content #拿到图片二进制数据with open(path,'wb')as fp: # 持久化存储fp.write(re)print('保存成功{}张'.format(str(j)))j += 1 #记录一共搞到了多少照片print('全部完成')

这就全部完成了。视频什么的也是一样的,在第四步的时候找到视频对应的节点点击,然后模拟鼠标下拉加载出所有视频后分析视频链接的节点,拿到节点里面的链接用requests.get().content拿到数据并保存就行了。

注意所有定位节点操作之前要么time.sleep()几秒,要么用显示等待,不然会出现定位不到节点的情况

(没错用的是王大娘的微博作实例)

python selenium学习之新浪微博相关推荐

  1. Python+Selenium学习--异常截图

    Python+Selenium学习--异常截图 参考文章: (1)Python+Selenium学习--异常截图 (2)https://www.cnblogs.com/uniquefu/p/97191 ...

  2. Python+Selenium爬取新浪微博评论数据

    Python+Selenium爬取指定新浪微博的数据 微博分析 微博端类型 选择爬取对象 Ajax动态加载数据分析 Python实现代码 微博分析 微博端类型 首先找到一个待爬取的微博,需要注意的是, ...

  3. web自动化测试python+selenium学习总结----selenium安装、浏览器驱动下载

    一.安装selenium 命令安装selenium库 :pip  install -U selenium 查看selenium是否安装成功:pip list PS:有时会有异常,安装失败,可以尝试去s ...

  4. Python+Selenium学习笔记8 - 多表单多窗口切换

    1.多表单切换 下图为待测页面:内嵌百度首页 切换到百度首页进行操作 1 #coding = utf-8 2 3 from selenium importwebdriver4 importos5 im ...

  5. Python+Selenium学习笔记10 - send_keys上传文件

    在火狐浏览器上传文件 上传前,同一个HTML文件在火狐和Edge浏览器显示有些不同 这是Firefox浏览器的显示 这是Edge浏览器 上传后 1 # coding = utf-8 2 3 from ...

  6. Python+Selenium学习笔记5 - python官网的tutorial - 交互模式下的操作

    这篇笔记主要是从Python官网的Tutorial上截取下来,再加上个人理解 1. 在交互模式下,下划线'_'还可以表示上一步的计算结果 2.引号转义问题. 从下图总结的规律是,字符串里的引号如果和引 ...

  7. 从入门到入土:Python爬虫学习|实例练手|爬取百度翻译|Selenium出击|绕过反爬机制|

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  9. Python+Selenium实现新浪微博自动登录

    Python+Selenium实现新浪微博自动登录 环境说明:win10+eclipse+chrome 备注:需要下载chrome浏览器的驱动(地址: https://sites.google.com ...

最新文章

  1. discuz X3全局变量$_G
  2. python传文件给java_python使用简单http协议来传送文件
  3. python 中locals() 和 globals()
  4. GoF的23种设计模式之创建型模式的特点和分类
  5. 分享10款常用的jQuery焦点图插件
  6. 深大计算机系有金工实习吗,金工实习报告答案深圳大学拿A答案(精选).pdf
  7. Codeforces Round #292 (Div. 2):C. Drazil and Factorial
  8. 你的AJAX 请求真的安全?
  9. 卡巴斯基一年版 送序列号
  10. 2021年全球以太网供电(POE)控制器收入大约269.2百万美元,预计2028年达到363.9百万美元
  11. 计算机金钱符号怎么打,电脑键盘上怎么打钱的符号
  12. 一个k8s集群——跨云服务器部署
  13. CS224W-图神经网络 笔记5.1:Spectral Clustering - 谱聚类基础知识点
  14. mybatis 的trim标签的使用,属性prefix,suffix,prefixOverrides,suffixOverrides
  15. 魔百和CM311-1a_CH_S905L3A_安卓9.0_纯净线刷固件包
  16. python123九宫格输入_python制作朋友圈九宫格图片
  17. Scrapy爬虫项目——阿里文学当当网
  18. trim有什么用计算机二级,玩转SSD中的TRIM技术
  19. 拿下我人生中第7个Offer,我先收藏为敬
  20. 碰到CTS问题我该如何处理?

热门文章

  1. Python实现GWO智能灰狼优化算法优化支持向量机分类模型(SVC算法)项目实战
  2. 嵌入式linux启动时间优化
  3. 小赢钱包近年来的不断创新和变革,给传统金融服务机构带助力及补充
  4. 小布助手在百度飞桨实体链指比赛中的实践应用
  5. 有什么好的论文查重软件?两分钟让你知道
  6. ACM-ICPC 知识点 经验
  7. python全国快递查询接口和电子面单打印接口,一次接入全国快递公司
  8. 雍正王朝里康熙临终予四爷言
  9. 传奇世界私服务器端制作,关于内网架设传奇世界私服问题的一些解答
  10. [足式机器人]Part3机构运动微分几何学分析与综合Ch02-3 平面机构离散运动鞍点综合——【读书笔记】