加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何刮取需要使用Python登录的网站

发布时间:2020-12-20 13:16:09 所属栏目:Python 来源:网络整理
导读:首先,我知道有很多类似的问题,但不幸的是,它们都不适合我.我是 python中的一个相对noob,简单的解释和答案将不胜感激. 我需要使用python以编程方式登录站点.我试图使用请求这样做.我已经观看了关于这个主题的YouTube视频,并查看了各种问题和答案,但它对我不起
首先,我知道有很多类似的问题,但不幸的是,它们都不适合我.我是 python中的一个相对noob,简单的解释和答案将不胜感激.

我需要使用python以编程方式登录站点.我试图使用请求这样做.我已经观看了关于这个主题的YouTube视频,并查看了各种问题和答案,但它对我不起作用.

以下代码与我实现目标的过程非常接近.我使用的IDE是带有python 3.6.0的Spyder 3.1.2.我的输出显示为[],如下面的代码所示.我已尝试与其他网站相同的方法,输出始终相同.我不知道这意味着什么.我怎么知道代码是否有效?

import requests
from lxml import html

USERNAME = "username"
PASSWORD = "password"

LOGIN_URL = "https://bitbucket.org/account/signin/?next=/"
URL = "https://bitbucket.org/"

def main():
    session_requests = requests.session()

    # Get login csrf token
    result = session_requests.get(LOGIN_URL)
    tree = html.fromstring(result.text)
    authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]

    # Create payload
    payload = {
        "username": USERNAME,"password": PASSWORD,"csrfmiddlewaretoken": authenticity_token
    }

    # Perform login
    result = session_requests.post(LOGIN_URL,data = payload,headers = dict(referer = LOGIN_URL))

    # Scrape url
    result = session_requests.get(URL,headers = dict(referer = URL))
    tree = html.fromstring(result.content)
    bucket_names = tree.xpath("//div[@class='repo-list--repo']/a/text()")

    print(bucket_names)

if __name__ == '__main__':
    main()

runfile(‘C:/Users/Thomas/untitled6.py’,wdir =’C:/ Users / Thomas’)
[]

先感谢您.

chickencreature.

解决方法

试试这个.

result = requests.get(LOGIN_URL,auth=(USERNAME,PASSWORD))

查看这些类似问题This和This的答案.
Here是使用请求模块进行身份验证的文档

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读