Я пытаюсь удалить этот сайт: 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)
Оба безрезультатно. Я прочитал пару руководств в Интернете, но я не уверен, что делаю.