python-selenium登陆今日头条

原文地址:http://www.bianbingdang.com/article_detail/148.html

#python-selenium登陆今日头条

在运营今日头条的过程当中,有时候未免要进行一些重复无味的劳动。比如在发放微头条的时候,写好了许多内容,并不像每次登陆然后逐个发表。比如我想每个整点去发表一些东西。那么自动登陆今日头条就很有必要了。

选择selenium

选择这个工具的原因是,它可以模拟浏览器去登陆,从而避免一些不必要的麻烦。比如各种浏览器时间戳验证,反爬虫等不好处理的东西(请求头的拼接、cookies的获取)。加上运行不是特别的频繁,也不会造成频繁输入验证码、封IP等。

下载selenium驱动

设置浏览器模型

from selenium import webdriver
browser = webdriver.Chrome()

获取cookies

browser.get("https://mp.toutiao.com")
# 点击登陆按钮
login = browser.find_element_by_css_selector('body > div > div.carousel > div.page.page-1 > div > img.i3')
login.click()
time.sleep(3)
# 填写手机号
phone = browser.find_element_by_id('user-name')
phone.send_keys('19991320539')
# 获取验证码
browser.find_element_by_id('mobile-code-get').click()
verfiy_code_input = input("请输入验证码:")
# 验证码输入框
mobile_code = browser.find_element_by_id('mobile-code')
mobile_code.send_keys(verfiy_code_input)

# 登陆
browser.find_element_by_id('bytedance-SubmitStatic').click()
time.sleep(5)
cookies = browser.get_cookies()
with open('cookies.json', 'w') as f:
    self.cookies = json.loads(f.write(json.dumps(cookies)))

这块将获取到cookies放到cookies.json文件当中,这块今日头条在第一次登陆,会有一个云验证的图片,这块比较麻烦,只等手动点击,来获取到cookies。但是获取到之后,官方默认可以保持一个月。所以这块比较放心,不用每次都去登陆,只要得到cookie就行

使用cookie登陆

browser.get("https://mp.toutiao.com/profile_v3/index")
with open('cookies.json') as f:
    cookies = json.loads(f.read())
for cookie in cookies:
    browser.add_cookie(cookie)

这块在登陆的时候,可能页面显示未登录,其实设置cookies之后,已经登陆成功了,只需要再刷新以下一下页面 。
可再登陆完成后执行如下代码几次

browser.refresh()
browser.refresh()

完整dome代码如下

"""
#!usr/bin/env python  
# -*- coding:utf-8 -*-
""" 
@author:'手机视界&[变饼档博客](http://www.bianbingdang.com "变饼档博客")' 
@file: login.py 
@time: 2019/03/10
"""

import time
import json

from selenium import webdriver


class TouTiao:
    def __init__(self):
        self.cookies = None
        self.browser = webdriver.Chrome()

    def set_cookies(self):
        with open('cookies.json') as f:
            self.cookies = json.loads(f.read())
        for cookie in self.cookies:
            self.browser.add_cookie(cookie)

    def create_session(self):
        self.browser.get("https://mp.toutiao.com")
        if self.cookies is None:
            self.set_cookies()
        time.sleep(1)
        self.browser.get("https://mp.toutiao.com/profile_v3/index")
        
    def forward_wei(self, content):
        """
        跳转微头条
        :return:
        """
        self.browser.get("https://mp.toutiao.com/profile_v3/weitoutiao/publish")
        time.sleep(1)
        # 微头条内容框
        weitoutiao_content = self.browser.find_element_by_css_selector(
            "div > div.garr-container-white.weitoutiao-index-zone > div > div:nth-child(1) > textarea")
        weitoutiao_content.send_keys(content)
        # 微头条发布按钮
        weitoutiao_send = self.browser.find_element_by_css_selector(
            "div > div.garr-container-white.weitoutiao-index-zone > div > button")
        weitoutiao_send.click()
        
    def login(self):
        self.browser.get("https://mp.toutiao.com/profile_v3/index")
        # 点击登陆按钮
        login = self.browser.find_element_by_css_selector('body > div > div.carousel > div.page.page-1 > div > img.i3')
        login.click()
        time.sleep(3)
        # 填写手机号
        phone = self.browser.find_element_by_id('user-name')
        phone.send_keys('19991320539')
        # 获取验证码
        self.browser.find_element_by_id('mobile-code-get').click()
        verfiy_code_input = input("请输入验证码:")
        # 验证码输入框
        mobile_code = self.browser.find_element_by_id('mobile-code')
        mobile_code.send_keys(verfiy_code_input)

        # 登陆
        self.browser.find_element_by_id('bytedance-SubmitStatic').click()
        time.sleep(5)
        cookies = self.browser.get_cookies()
        with open('cookies.json', 'w') as f:
            self.cookies = json.loads(f.write(json.dumps(cookies)))
        print(cookies, "登陆成功")

    def close(self):
        self.browser.close()

if __name__ == '__main__':
    tou_tiao = TouTiao()
    tou_tiao.create_session()
    tou_tiao.forward_wei('<br/>test')

作者微信:bianbingdang。转载请注明,变饼档博客

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python Selenium 是一套完整的web应用程序测试系统,它包含了测试的录制、编写及运行和测试的并行处理。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。Selenium支持的语言包括C#,Java,Perl,PHP,Python和Ruby。目前,Selenium Web 驱动程序最受Python和C#欢迎。你可以使用Python编写Selenium测试脚本,并且可以直接在大多数现代Web浏览器中运行。 如果你想在PyCharm中使用Python Selenium,你可以按照以下步骤操作: 1. 在PyCharm中新建一个Python文件,自行命名。 2. 导入selenium包,可以使用以下代码:`from selenium import webdriver` 3. 打开Firefox浏览器,可以使用以下代码:`browser = webdriver.Firefox()` 4. 如果需要等待一段时间,可以使用`time.sleep()`方法,比如停留3秒:`time.sleep(3)` 5. 最后,关闭浏览器,可以使用以下代码:`browser.quit()`[3] 这样,你就可以在PyCharm中使用Python Selenium了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [基于PythonSelenium详细教程](https://blog.csdn.net/qq_43125235/article/details/125601564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Python selenium基础用法详解](https://blog.csdn.net/m0_63794226/article/details/126447599)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值