相关疑难解决方法(0)

如何在Python请求中使用cookie

我正在尝试登录页面并访问页面中的其他链接.

payload={'username'=<username>,'password'=<password>}
with session() as s:
    r = c.post(<URL>, data=payload)
    print r
    print r.content
Run Code Online (Sandbox Code Playgroud)

这给了我一个"405 Not Allowed"错误.我使用chrome开发人员工具查看了post方法的详细信息,可以看到api(URL/api/auth).我使用有效负载发布到该URL,它正在工作,我收到类似于我在开发人员中看到的响应.

不幸的是,在登录后尝试"获取"另一个URL时,我仍然从登录页面获取内容.为什么登录不坚持?我应该使用cookies吗?我是新手,所以我真的不知道如何使用cookies.

python cookies python-requests

33
推荐指数
4
解决办法
8万
查看次数

如何在python请求库中向cookiejar添加cookie

我正在尝试使用python请求1.2.3库将cookie添加到现有的cookiejar中.每次添加新cookie时,jar中的数据都会被用于新cookie.密钥丢失,值丢失或与不正确的密钥匹配.我不确定它是否是一个请求库错误或我没有正确发送cookie.我正在使用以下代码导致cookiejar中出现错误的cookie.我是否正确格式化了cookie?有任何想法吗?

    my_cookie = {
           'domain':'www.mydomain.com',
           'expires':None,
           'name':'COOKIE_NAME',
           'path':'/',
           'value':'the cookie works',
           'version':0
}

s = requests.Session()
requests.utils.add_dict_to_cookiejar(s.cookies, my_cookie)
Run Code Online (Sandbox Code Playgroud)

cookies session-cookies python-3.x python-requests

13
推荐指数
4
解决办法
3万
查看次数

django和python请求 - 在发布请求时获得403

我正在使用requests登录我的Django网站进行测试(是的,我知道Django TestClient,但我需要简单的http).我可以登录,只要我收到请求,一切都OK.

当我尝试使用post时,我从csrf中间件获得403.我现在通过在我的视图中使用@crsf_exempt来解决这个问题,但更喜欢长期解决方案.

这是我的代码:

with requests.Session() as ses:

    try:

        data = {
            'username': self.username,
            'password': self.password,
        }

        ses.get(login_url)
        try:
            csrftoken = ses.cookies["csrftoken"]
        except Exception, e:
            raise
        data.update(csrfmiddlewaretoken=csrftoken)

        _login_response = ses.post(login_url, data=data)

        logger.info("ses.cookies:%s" % (ses.cookies))

        assert 200 <= _login_response.status_code < 300, "_login_response.status_code:%s" % (_login_response.status_code)

        response = ses.post(
            full_url,
            data=data,
            )

        return self._process_response(response)
Run Code Online (Sandbox Code Playgroud)

登录工作正常,我可以在这里看到csrf令牌.

 INFO:tests.helper_fetch:ses.cookies:<RequestsCookieJar[<Cookie csrftoken=TmM97gnNHs4YCgQPzfNztrAWY3KcysAg for localhost.local/>, <Cookie sessionid=kj6wfmta
Run Code Online (Sandbox Code Playgroud)

但是,中间件将cookie视为空.

INFO:django.middleware.csrf:request.COOKIES:{}
Run Code Online (Sandbox Code Playgroud)

我已经将日志代码添加到它:

def process_view(self, request, callback, callback_args, callback_kwargs):

    if getattr(request, 'csrf_processing_done', False):
        return None

    try: …
Run Code Online (Sandbox Code Playgroud)

django django-csrf python-requests

5
推荐指数
1
解决办法
1509
查看次数

使用Python(漂亮的汤)抓取需要单击“我同意cookie”按钮的网页?

我正在尝试抓取当天所有足球(足球)比赛的以下网址: https: //www.soccerstats.com/matches.asp ?matchday=2&daym=tomorrow

我的代码曾经有效,但网站后来发生了变化,您现在需要在网站加载页面之前单击“我同意 cookie”按钮。这现在导致我的代码出现问题。对此有什么解决办法吗?

任何帮助深表感谢。

我尝试查看 bs4 的文本输出,很明显该网站尚未加载,而是在输出中看到“我同意 cookies”文本,这意味着它没有通过此阶段。

from bs4 import BeautifulSoup
import requests

url = "https://www.soccerstats.com/matches.asp?matchday=2"
r = requests.get(url)
data = r.text
soup = BeautifulSoup(data, 'html.parser')
all_matches = []

all_matches = re.findall(r"""<a class='button' style='background-color:#AAAAAA;font-color=white;' href='(.*?)'>""", data)
Run Code Online (Sandbox Code Playgroud)

输出应列出各个匹配 URL。

python cookies screen-scraping beautifulsoup

5
推荐指数
1
解决办法
1万
查看次数