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

python – 废弃多个帐户,即多个登录

发布时间:2020-12-20 11:35:35 所属栏目:Python 来源:网络整理
导读:我已成功废弃单个帐户的数据.我想在一个网站上废弃多个帐户,多个帐户需要多次登录,我想要一种如何管理登录/注销的方法? 解决方法 您可以使用每个帐户会话多个cookiejars并行刮取多个帐户, 请参阅 http://doc.scrapy.org/en/latest/topics/downloader-middle
我已成功废弃单个帐户的数据.我想在一个网站上废弃多个帐户,多个帐户需要多次登录,我想要一种如何管理登录/注销的方法?

解决方法

您可以使用每个帐户会话多个cookiejars并行刮取多个帐户,
请参阅 http://doc.scrapy.org/en/latest/topics/downloader-middleware.html?highlight=cookiejar#std:reqmeta-cookiejar的“cookiejar”请求元密钥

澄清:
假设我们在settings.py中有一组帐户:

MY_ACCOUNTS = [
    {'login': 'my_login_1','pwd': 'my_pwd_1'},{'login': 'my_login_2','pwd': 'my_pwd_2'},]

这是登录页面的链接:http://example.com/login

在你的蜘蛛中创建start_requestsfunction,在这个函数中我们可以在MY_ACCOUNTS数组上循环并登录到每个帐户:

def start_requests(self):
    requests = []

    for i,account in enumerate(self.crawler.settings['MY_ACCOUNTS']):
        request = FormRequest('http://example.com/login',formdata={'form_login_name': account['login'],'form_pwd_name': account['pwd']},callback=self.parse,dont_filter=True)

        request.meta['cookiejar'] = i
        requests.append(request)

    return requests

form_login_name和form_pwd_name分别是登录表单上的字段名称.

dont_filter = True忽略重复请求的过滤器,因为在这里我们发出POST请求以登录同一页面http://example.com/login

request.meta [‘cookiejar’] =我将每个会话的cookie(登录)分开,不要忘记在你的子请求中添加cookiejar标识符,假设你想在登录后将scrapy重定向到一个页面:

def parse(self,response): 
    """ make some manipulation here ... """

    yield Request(my_url,meta={'cookiejar': response.meta['cookiejar']},callback = my_callback)

(编辑:李大同)

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

    推荐文章
      热点阅读