python-selenium登陆今日头条

https://blog.csdn.net/a942242856/article/details/88379727

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

#python-selenium登陆今日头条

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

选择selenium

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

下载selenium驱动

设置浏览器模型

from selenium import webdriver
browser = webdriver.Chrome()
  • 1
  • 2

获取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)))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

这块将获取到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)
  • 1
  • 2
  • 3
  • 4
  • 5

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

browser.refresh()
browser.refresh()
  • 1
  • 2

完整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‘)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80

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

原文地址:https://www.cnblogs.com/jukan/p/11148836.html

时间: 2024-10-31 23:17:24

python-selenium登陆今日头条的相关文章

Python爬取今日头条段子

刚入门Python爬虫,试了下爬取今日头条官网中的段子,网址为https://www.toutiao.com/ch/essay_joke/源码比较简陋,如下: 1 import requests 2 import json 3 res = requests.get('https://www.toutiao.com/api/article/feed/?category=essay_joke&utm_source=toutiao&widen=1&\max_behot_time=0&am

python爬取今日头条关键字图集

1.访问搜索图集结果,获得json如下(右图为data的一条的详细内容).页面以Ajax呈现,每次请求20个图集,其中 title --- 图集名字 artical_url --- 图集的地址 count --- 图集图片数量    2. 访问其中的图集 访问artical_url,获得图集图片详细信息,其中图片url为下载地址 展现出爬虫关键部分,整体项目地址在https://github.com/GeoffreyHub/toutiao_spider 1 #!/usr/bin/env pyth

今日头条视频下载器[android下载源码]

在家无聊,看到赵四大神 写的一个python脚本下载今日头条的工具,最后他还给出了移动端的样子,可惜没有源码,在他的虚心教导下,看完了他的文章,我决定自己撸一个,见笑了: CSDN图片最大值只能传2m,所以用了两张gif图,大家见笑了. 下面说一下具体的实现过程,这一点说实在,基本上是翻译了赵大神 的文章,没啥要说,但是还是记录一下吧. 具体的实现步骤大概可以用下的思路概括: 说得挺高上,其实实现起来还是蛮简单的. 1.分享代码如下,主要是activity的intent配置,这个一般人都知道,我

Python的几个爬虫代码整理(网易云、微信、淘宝、今日头条)

整理了一下网易云歌曲评论抓取.分析好友信息抓取.淘宝宝贝抓取.今日头条美图抓取的一些代码 抓取网易云评论 进入歌曲界面: http://music.163.com/#/song?id=453185824 找到如下的数据源: 贴一段Lyrichu的代码: (运行环境为P2.7) # -*- coding: utf-8 -*-# @Time : 2017/3/28 8:46# @Author : Lyrichu# @Email : [email protected]# @File : NetClou

2018春招-今日头条笔试题-第三题(python)

题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 本题的做法最重要的应该是如何拼出'1234567890',对于输入表达试获得对应的结果利用python内置函数eval()即可以实现.利用5个字符串来表达'1234567890',如下(为了好看,里面加了tab空格符) '66666 ....6 66666 66666 6...6 66666 66666 66666 66666 66666''6...6 ....6 ....6 ....6 6...6 6.... 6

使用scrapy爬虫,爬取今日头条首页推荐新闻(scrapy+selenium+PhantomJS)

爬取今日头条https://www.toutiao.com/首页推荐的新闻,打开网址得到如下界面 查看源代码你会发现 全是js代码,说明今日头条的内容是通过js动态生成的. 用火狐浏览器F12查看得知 得到了今日头条的推荐新闻的接口地址:https://www.toutiao.com/api/pc/focus/ 单独访问这个地址得到 此接口得到的数据格式为json数据 我们用scrapy+selenium+PhantomJS的方式获取今日头条推荐的内容 下面是是scrapy中最核心的代码,位于s

python+selenium+unnitest写一个完整的登陆的验证

1 import unittest 2 from selenium import webdriver 3 from time import sleep 4 5 class lonInTest (unittest.TestCase): 6 @classmethod 7 def setUp(self): 8 self.driver = webdriver.Firefox() 9 self.driver.implicitly_wait(30) 10 def test_login_sucess(self

如和用Python获取今日头条上面三千美女图,且看教程

我们的学习爬虫的动力是什么? 有人可能会说:如果我学好了,我可以找一个高薪的工作. 有人可能会说:我学习编程希望能够为社会做贡献(手动滑稽) 有人可能会说:为了妹子! ..... 其实我们会发现妹子才是第一生产力呀! 今天咱们就是爬取今日头条,你要问我为什么要爬取今日头条?是因为爱嘛? 是因为责任嘛? 不,是因为头条里面的有很多美女图片,然后我们可以把她们都爬取下来!!! 是不是想想都觉得很兴奋,是不是都要流鼻血了?! 我们要做的就是把上面的图片给爬下来. 开始分析网站 按下f12,然后点击ne

Python3从零开始爬取今日头条的新闻【一、开发环境搭建】

Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Python3从零开始爬取今日头条的新闻[四.模拟点击切换tab标签获取内容] Python3从零开始爬取今日头条的新闻[五.解析头条视频真实播放地址并自动下载] 所谓爬虫,就是通过编程的方式自动从网络上获取自己所需的资源,比如文章.图片.音乐.视频等多媒体资源.通过一定的方式获取到html的内容,再通过