Не могу войти используя Scrapy - PullRequest
0 голосов
/ 04 июня 2018
<div class="col small-w100 tiny-w100 col1">
<div class="box_already_member">
    <h2 class="fs22 fwn foro black">Already member ?</h2>
    <p>Please enter your account details : </p>
    <div class="box_form">
    <label>Your email* </label>
    <br>
    <input id="txtUsernamelogin" type="text" data-parsley-group="glogin" 
    data-parsley-required="true" data-parsley-errors-container="#lblMessage" 
    data-parsley-type-message="Please check that your Professional Email is 
    in correct format" data-parsley-required-message="Please type your 
    Professional Email" data-parsley-type="email"><br>
    <label>Password* </label>
    <br>
    <input id="txtPasswordlogin" type="password" data-parsley-group="glogin" 
    data-parsley-required="true" data-parsley-errors-container="#lblMessage" 
    data-parsley-required-message="Please type your password"><br>
    <div class="row pt20 pb20">
        <div class="col "><a class="c19" href="/forgot-password" 
         rel="nofollow">Forgot password ?</a></div>
            <div class="col txtright">
               <div class="inbl">
                   <a href="#" id="loginbtnclick" class=" row  wauto  fs14 
                    c0 bgc18 rounded5 txtcenter h36p vam tdn mb20">
                   <span class="col vam fs16 pr40 pl40"> 
                   <strong>LOGIN</strong></span>
                   </a>
               </div>
            </div>
        </div>
  </div>
<span>*mandatory fields</span><br>
<span id="lblMessage" class="red"></span>
</div>


пробовал использовать scrapy.FormRequest.from_response (), но, похоже, не работает.

Мне нужно войти, чтобы получить полный доступ к деталям продукта Страница входа:https://cosmetics.specialchem.com/login

1 Ответ

0 голосов
/ 04 июня 2018

Это пример того, как войти на целевой сайт.Для этого вам необходимо открыть браузер и изучить все данные, отправляемые на сервер.Когда вы понимаете, как это работает, вы можете написать свой собственный код.

import scrapy
from scrapy.exceptions import CloseSpider
from scrapy.spiders import CrawlSpider


class SpecialchemSpider(CrawlSpider):
    name = 'specialchem'
    allowed_domains = ['<DOMAIN>']
    start_urls = ['https://cosmetics.<DOMAIN>/login']
    custom_settings = {'ROBOTSTXT_OBEY': False}

    def parse(self, response):
        inputs = response.css('form input')

        formdata = {'Iid': '',
                    'Password': 'SECRET',
                    'User': 'EMAIL',
                    'Popin': '1'}

        return scrapy.FormRequest(
            'https://cosmetics.<DOMAIN>/services/LoginService.ashx',
            formdata=formdata,
            callback=self.after_login
        )

    def after_login(self, response):
        if 'OK' not in response.text:
            raise CloseSpider('Wrong login or password. Or you was blocked.')

        url = 'https://cosmetics.<DOMAIN>/product/i-eastman-chemical-company-eastman-aq-38s-polymer'
        return scrapy.Request(url, callback=self.product)

    def product(self, response):
        pass

Он будет работать, когда вы замените DOMAIN, SECRET и EMAIL на правильный.

...