正在删除需要使用scrapy进行身份验证的网站

2024-10-02 06:35:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力清理这个网站: https://www.albertacannabis.org/

为了访问其产品,我必须对会话进行身份验证。问题是,我不确定Scrapy如何进行身份验证,所以我不知道这个网站的最佳方法是什么

登录URL为:https://www.albertacannabis.org/login

我尝试了以下代码:

import scrapy
from scrapy.http import FormRequest

class AlbertaspiderSpider(scrapy.Spider):
    name = 'albertaspider'
    with open("./alberta_parsed_input.txt", "r") as f:
        start_urls = f.readlines()

    def parse(self, response):
        token = response.xpath('//*[@id="_CRSFform"]/input/@value').extract_first()
        return FormRequest.from_response(response,
                                        formdata={'__RequestVerificationToken': token,
                                                   'Password': 'foobar',
                                                   'UserName': 'foobar'},
                                        callback=self.scrape_pages)

        product_code = response.xpath('//*[@id="product-title-0"]/a/@href').extract_first()
        print(product_code)

以及:

import scrapy
from scrapy.http import FormRequest
from scrapy.spiders.init import InitSpider

class AlbertaspiderSpider(scrapy.Spider):
    name = 'albertaspider'
    login_url = "https://www.albertacannabis.org/login"
    with open("./alberta_parsed_input.txt", "r") as f:
        start_urls = f.readlines()
    def init_request(self):
        return scrapy.Request(
            url=self.login_url,
            callback=self.login,
        )
    def login(self, response):
        yield scrapy.FormRequest.from_response(
            response=response,
            formid='__RequestVerificationToken',
            formdata={
                'UserName': 'foo@gmail.com',
                'Password': 'bar',
            },
            callback=self.initialized,
        )
    def parse(self, response):
        product_code = response.xpath('//*[@id="product-title-0"]/a/@href').extract_first()
        print(product_code)

两者都没有用。我在网上读过几本指南,但我不确定自己在做什么


Tags: fromhttpsorgimportselfinputresponsedef

热门问题