数据分析实战 45 讲
陈旸
清华大学计算机博士
123928 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
第二模块:数据分析算法篇 (20讲)
第四模块:数据分析工作篇 (2讲)
数据分析实战 45 讲
15
15
1.0x
00:00/00:00
登录|注册

37丨数据采集实战:如何自动化运营微博?

定位发微博的文本框
定位评论区中输入框元素
获取微博链接
使用XPath定位元素
获取用户UID
提交表单
点击按钮
在输入框中输入内容
清空输入框的内容
CSS定位
XPath定位
link上的部分文本定位
link上的完整文本定位
tag定位
class定位
name定位
id定位
自动化运营的细节
遇到复杂情况的处理
使用工具完成自动化操作
发微博
写评论
加关注
元素操作
元素定位方法
总结
微博自动化运营
Selenium自动化测试工具
数据采集实战

该思维导图由 AI 生成,仅供参考

今天我来带你做一个数据采集的实战。之前我讲到可以使用第三方工具,比如八爪鱼做数据采集,也可以自己编写脚本,比如使用 Python。编写 Python 做数据采集和自动化最大的好处就是可控性强,每个步骤都可以调试,而且可以找到问题所在并一一突破。
今天我就带你使用 Python 自动化运营微博。关于今天的学习,希望你能达成以下的 3 个学习目标:
掌握 Selenium 自动化测试工具,以及元素定位的方法;
学会编写微博自动化功能模块:加关注,写评论,发微博;
对微博自动化做自我总结。

Selenium 自动化测试工具

当我们做 Web 自动化测试的时候,可以选用 Selenium 或者 Puppeteer 工具。我在第 10 篇的时候简单介绍过 Selenium 这个工具,你可以再回顾一下。Puppeteer 通过控制无头 Chrome 来完成浏览器的工作。这两个工具之间的区别在于:Selenium 更关注程序执行的流程本身,比如找到指定的元素,设置相应的值,然后点击操作。而 Puppeteer 是浏览者的视角,比如光标移动到某个元素上,键盘输入某个内容等。
今天我们继续使用 Selenium 工具自动化模拟浏览器,重点是学习对元素的定位。在第 10 篇讲到 Selenium WebDriver 的使用时,重点是对 HTML 进行获取和解析,然后通过 HTML 中的 XPath 进行提取,读取相应的内容。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文通过实战演示了如何运用Python和Selenium工具进行微博自动化运营。首先介绍了Selenium自动化测试工具的使用方法和元素定位的技巧,包括通过id、name、class、tag、链接文本、XPath和CSS进行定位,并对元素进行操作。随后详细展示了如何使用Python编写自动化功能模块,包括自动登录微博、加关注、写评论和发微博。通过代码示例和具体操作步骤,读者可以快速掌握如何使用Python和Selenium实现微博自动化运营。文章还提到了自动化运营中可能遇到的问题和需要考虑的情况,以及微博自动化运营的局限性和未来发展方向。整体而言,本文内容丰富,操作性强,适合对数据采集和自动化运营感兴趣的读者阅读学习。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据分析实战 45 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(23)

  • 最新
  • 精选
  • 牛奶布丁
    老师,微博登录时需要验证码怎么处理呢?

    作者回复: 这个最好用第三方工具,比如八爪鱼这种

    2019-03-09
    2
    16
  • 梁林松
    给打家介绍一个XPath的小窍门: 下载 XPath Helper插件,安装后 在网页上选取想要提取的元素, 点击右键 选中 检查 然后 开发者工具自动打开 你可以看到 HTML代码 ,选中然后再次点击右键,选中copy 里的 copy to xpath这样就得到了xpath的值了。

    作者回复: 对 XPath Helper很好用

    2019-03-08
    4
    13
  • 一语中的
    数据思维和算法是我的薄弱项,还在一节一节敲之前例子中的代码,但selenium和爬虫是强项,8种定位方法结合WebDriverWait,再加上ActionChains中的方法和js基本天天用。 虽然学的有点虐(除了本课程最近同时在补《利用python进行数据分析》《精益数据分析》)但是很开心~~~

    作者回复: 不错的图书分享

    2019-03-08
    11
  • 王彬成
    取消关注时,必须登录账户 ______________ #模拟微博自动登录 from selenium import webdriver import time browser=webdriver.Chrome('./chromedriver') # 登陆微博 def weibo_login(username,password): # 打开微博登录页 browser.get('https://passport.weibo.cn/signin/login') browser.implicitly_wait(5) time.sleep(1) # 填写登录信息:用户名、密码 browser.find_element_by_id("loginName").send_keys(username) browser.find_element_by_id("loginPassword").send_keys(password) time.sleep(1) # 点击登录 browser.find_element_by_id("loginAction").click() time.sleep(1) # 设置用户名、密码 username='**********' password='*********' weibo_login(username,password) # 取消指定的用户 def out_follow(uid): browser.get('https://m.weibo.cn/u/'+str(uid)) time.sleep(1) #browser.find_element_by_id("follow").click() out_follow_button=browser.find_element_by_xpath('//*[@id="app"]/div[1]/div[4]/div[2]/div/div[1]/div/span/h4') out_follow_button.click() time.sleep(1) # 点击取消关注 out_button1=browser.find_element_by_xpath('//*[@id="app"]/div[1]/div[4]/div[2]/div/div[1]/div/div/ul/li[2]/div/h4') out_button1.click() #再次确认取消关注 out_button2=browser.find_element_by_xpath('//*[@id="app"]/div[2]/div[1]/div[2]/footer/div[2]/a') out_button2.click() time.sleep(1) # 每天学点心理学 UID uid='1890826225' out_follow(uid)

    作者回复: Good Job

    2019-03-09
    8
  • 课后练习取消关注模块: # 取关指定的用户 def unfollow(uid): browser.get('https://m.weibo.com/u/'+str(uid)) time.sleep(1) unfollow_button = browser.find_element_by_xpath('//*[@id="app"]/div[1]/div[4]/div[2]/div/div[1]/div') unfollow_button.click() time.sleep(1) # 选择取消关注 uf_button = browser.find_element_by_xpath('//*[@id="app"]/div[1]/div[4]/div[2]/div/div[1]/div/div/ul/li[2]/div') uf_button.click() time.sleep(1) # 确定取消 confirm_button = browser.find_element_by_xpath('//*[@id="app"]/div[2]/div[1]/div[2]/footer/div[2]/a') confirm_button.click() time.sleep(1) # 每天学点心理学 UID uid = '1890826225' unfollow(uid)

    作者回复: Good Job

    2019-03-08
    2
  • Untitled
    相对于发微博和加关注,更多需求是爬取评论

    作者回复: 评论也可以尝试哦。原理相似,开发者工具中找到在源码中定位它的标签或属性,就可以爬取到想要的信息。

    2020-03-17
    1
  • Lisa
    selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"textarea.W_input"} (Session info: chrome=76.0.3809.132) 这个报错怎么处理???

    作者回复: 元素定位的问题

    2019-08-29
    2
    1
  • 周志翔
    可能是这个网站用的比较多了,xpath定位变了

    作者回复: 有时候网站样式变化了,xpath也需要调整

    2019-07-23
    1
  • 一直提示这个问题 driver.find_elements_by_css_selector("[node-type='publish']").click() AttributeError: 'list' object has no attribute 'click' 老师能帮忙看下嘛? 另外,一直在刷一直在刷 微博不让登录来,课后练习后面补上

    作者回复: 还是可以登录的,你也可以考虑用八爪鱼试试

    2019-04-23
    3
    1
  • 随便讲两句
    关注/取消关注用 [ https://m.weibo.cn/profile/:uid ] 这个页面也很方便。 # 取消关注 def unfollow(uid): browser.get('https://m.weibo.cn/profile/' + str(uid)) browser.implicitly_wait(5) time.sleep(1) browser.find_element_by_xpath("//a[@class='m-btn m-btn-block m-btn-lite-white']").click() time.sleep(1) browser.find_element_by_xpath("//a[@class='m-btn m-btn-white m-btn-text-orange']").click() time.sleep(1)

    作者回复: Good Sharing

    2019-04-03
    1
收起评论
显示
设置
留言
23
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部