zoukankan      html  css  js  c++  java
  • python登录豆瓣并获取自己看过的电影

    python登录豆瓣网站的过程

    准备工作

    进入豆瓣登录页面https://accounts.douban.com/passport/login

    选择使用密码登录

    1.  按下F12键进入控制台,
    2. 选择网络

    • 在输入框内输入错误的帐号密码,点击登录,
    • 这时就会看到

    网站发送了一个请求,因为是错误的帐号密码,所以无法发送成功,这时就可查看POST发送的表单信息和登录所使用的链接

    https://accounts.douban.com/j/mobile/login/basic

    表单信息

     这是使用python提交给后台的数据之一

    为了让豆瓣知道我们是用浏览器来登录的,需要添加另一个头信息

    User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 fari/537.36 Edg/83.0.478.37
     
    另外一般网站登录时候都有Cookie验证,所以请求时候Cookie也是必不可少的,这个也可以在标头内获取到。
     

    尝试登录

    代码python3

    # -*- coding: utf-8 -*-
    import requests
    
    
    def main():
        url_basic = 'https://accounts.douban.com/j/mobile/login/basic'
    
        ua_headers = {
            "User-Agent": 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)',
            "Cookie": "你的登录Cookie",
        }
    
       
        data = {
            'ck': '',
            'name': '你的登录帐号',
            'password': '你的登录密码',
            'remember': 'false',
            'ticket': ''
        }
        
        s = requests.Session()
        
        r = s.post(url=url_basic, data=data, headers=ua_headers)
        print(r.text)if __name__ == '__main__':
        main()

    运行代码输出

    这时豆瓣就已经登录成功了

    获取自己看过的电影

    经过上面的测试一切正常,这时网上的一些文章开始请求自己的主页面

    https://www.douban.com/people/你的豆瓣ID/

    这时豆瓣就会直接返回登录豆瓣的页面,不管cookie的格式有没有转换

    所以测试页面不要用自己的豆瓣个人中心

    改用自己看过的电影

    https://movie.douban.com/people/这里是你的ID/collect?start=0&sort=time&rating=all&filter=all&mode=grid

    这样豆瓣就可以正常返回我们需要的页面了
    完整代码如下
    # -*- coding: utf-8 -*-
    import requests
    
    
    def main():
        url_basic = 'https://accounts.douban.com/j/mobile/login/basic'
    
        ua_headers = {
            "User-Agent": 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)',
            "Cookie": "你的登录Cookie",
        }
    
        data = {
            'ck': '',
            'name': '你的登录帐号',
            'password': '你的登录密码',
            'remember': 'false',
            'ticket': ''
        }
    
        s = requests.Session()
        
        url = 'https://movie.douban.com/people/你的豆瓣ID/collect?start=0&sort=time&rating=all&filter=all&mode=grid'
        r = s.post(url=url_basic, data=data, headers=ua_headers)
        print(r.text)
        r.raise_for_status()
        response = s.get(url=url, headers=ua_headers)
        print(response.status_code)
        with open('douban3.html', 'wb') as f:
            f.write(response.content)
    
    
    if __name__ == '__main__':
        main()

    测试结果如下

     生成的douban3.html页面截取

     页面在浏览器打开

    这样暂时没有发现反爬的措施,爬取页面成功,需要后续操作可以使用beautifulsoup来实现内容获取

     
  • 相关阅读:
    设计模式13---设计模式之观察者模式(Observer)(行为型)
    codeforces 166C Median
    HDU 1176 免费馅饼
    老鸟的Python新手教程
    setsockopt()使用方法(參数具体说明)
    RelativeLayout经常使用属性介绍
    java多线程模拟生产者消费者问题,公司面试常常问的题。。。
    JAVA实现HTTPserver端
    进程间通信_03命名管道
    expdp&impdp
  • 原文地址:https://www.cnblogs.com/johu/p/12970233.html
Copyright © 2011-2022 走看看