37丨数据采集实战:如何自动化运营微博?
陈旸
该思维导图由 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
《数据分析实战 45 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(23)
- 最新
- 精选
- 牛奶布丁老师,微博登录时需要验证码怎么处理呢?
作者回复: 这个最好用第三方工具,比如八爪鱼这种
2019-03-09216 - 梁林松给打家介绍一个XPath的小窍门: 下载 XPath Helper插件,安装后 在网页上选取想要提取的元素, 点击右键 选中 检查 然后 开发者工具自动打开 你可以看到 HTML代码 ,选中然后再次点击右键,选中copy 里的 copy to xpath这样就得到了xpath的值了。
作者回复: 对 XPath Helper很好用
2019-03-08413 - 一语中的数据思维和算法是我的薄弱项,还在一节一节敲之前例子中的代码,但selenium和爬虫是强项,8种定位方法结合WebDriverWait,再加上ActionChains中的方法和js基本天天用。 虽然学的有点虐(除了本课程最近同时在补《利用python进行数据分析》《精益数据分析》)但是很开心~~~
作者回复: 不错的图书分享
2019-03-0811 - 王彬成取消关注时,必须登录账户 ______________ #模拟微博自动登录 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-098 - 志课后练习取消关注模块: # 取关指定的用户 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-082 - Untitled相对于发微博和加关注,更多需求是爬取评论
作者回复: 评论也可以尝试哦。原理相似,开发者工具中找到在源码中定位它的标签或属性,就可以爬取到想要的信息。
2020-03-171 - Lisaselenium.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-2921 - 周志翔可能是这个网站用的比较多了,xpath定位变了
作者回复: 有时候网站样式变化了,xpath也需要调整
2019-07-231 - 滢一直提示这个问题 driver.find_elements_by_css_selector("[node-type='publish']").click() AttributeError: 'list' object has no attribute 'click' 老师能帮忙看下嘛? 另外,一直在刷一直在刷 微博不让登录来,课后练习后面补上
作者回复: 还是可以登录的,你也可以考虑用八爪鱼试试
2019-04-2331 - 随便讲两句关注/取消关注用 [ 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-031
收起评论