python selenium学习之新浪微博
python selenium学习之新浪微博
运用知识点:
- 模拟登录
- 模拟鼠标事件
- 获取页面节点,解析
开始模拟登录:
第一步:实例化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学习之新浪微博相关推荐
- Python+Selenium学习--异常截图
Python+Selenium学习--异常截图 参考文章: (1)Python+Selenium学习--异常截图 (2)https://www.cnblogs.com/uniquefu/p/97191 ...
- Python+Selenium爬取新浪微博评论数据
Python+Selenium爬取指定新浪微博的数据 微博分析 微博端类型 选择爬取对象 Ajax动态加载数据分析 Python实现代码 微博分析 微博端类型 首先找到一个待爬取的微博,需要注意的是, ...
- web自动化测试python+selenium学习总结----selenium安装、浏览器驱动下载
一.安装selenium 命令安装selenium库 :pip install -U selenium 查看selenium是否安装成功:pip list PS:有时会有异常,安装失败,可以尝试去s ...
- Python+Selenium学习笔记8 - 多表单多窗口切换
1.多表单切换 下图为待测页面:内嵌百度首页 切换到百度首页进行操作 1 #coding = utf-8 2 3 from selenium importwebdriver4 importos5 im ...
- Python+Selenium学习笔记10 - send_keys上传文件
在火狐浏览器上传文件 上传前,同一个HTML文件在火狐和Edge浏览器显示有些不同 这是Firefox浏览器的显示 这是Edge浏览器 上传后 1 # coding = utf-8 2 3 from ...
- Python+Selenium学习笔记5 - python官网的tutorial - 交互模式下的操作
这篇笔记主要是从Python官网的Tutorial上截取下来,再加上个人理解 1. 在交互模式下,下划线'_'还可以表示上一步的计算结果 2.引号转义问题. 从下图总结的规律是,字符串里的引号如果和引 ...
- 从入门到入土:Python爬虫学习|实例练手|爬取百度翻译|Selenium出击|绕过反爬机制|
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- Python+Selenium实现新浪微博自动登录
Python+Selenium实现新浪微博自动登录 环境说明:win10+eclipse+chrome 备注:需要下载chrome浏览器的驱动(地址: https://sites.google.com ...
最新文章
- discuz X3全局变量$_G
- python传文件给java_python使用简单http协议来传送文件
- python 中locals() 和 globals()
- GoF的23种设计模式之创建型模式的特点和分类
- 分享10款常用的jQuery焦点图插件
- 深大计算机系有金工实习吗,金工实习报告答案深圳大学拿A答案(精选).pdf
- Codeforces Round #292 (Div. 2):C. Drazil and Factorial
- 你的AJAX 请求真的安全?
- 卡巴斯基一年版 送序列号
- 2021年全球以太网供电(POE)控制器收入大约269.2百万美元,预计2028年达到363.9百万美元
- 计算机金钱符号怎么打,电脑键盘上怎么打钱的符号
- 一个k8s集群——跨云服务器部署
- CS224W-图神经网络 笔记5.1:Spectral Clustering - 谱聚类基础知识点
- mybatis 的trim标签的使用,属性prefix,suffix,prefixOverrides,suffixOverrides
- 魔百和CM311-1a_CH_S905L3A_安卓9.0_纯净线刷固件包
- python123九宫格输入_python制作朋友圈九宫格图片
- Scrapy爬虫项目——阿里文学当当网
- trim有什么用计算机二级,玩转SSD中的TRIM技术
- 拿下我人生中第7个Offer,我先收藏为敬
- 碰到CTS问题我该如何处理?
热门文章
- Python实现GWO智能灰狼优化算法优化支持向量机分类模型(SVC算法)项目实战
- 嵌入式linux启动时间优化
- 小赢钱包近年来的不断创新和变革,给传统金融服务机构带助力及补充
- 小布助手在百度飞桨实体链指比赛中的实践应用
- 有什么好的论文查重软件?两分钟让你知道
- ACM-ICPC 知识点 经验
- python全国快递查询接口和电子面单打印接口,一次接入全国快递公司
- 雍正王朝里康熙临终予四爷言
- 传奇世界私服务器端制作,关于内网架设传奇世界私服问题的一些解答
- [足式机器人]Part3机构运动微分几何学分析与综合Ch02-3 平面机构离散运动鞍点综合——【读书笔记】