Мне нужно получить все входные данные из формы
<form action="/login" method="post" accept-charset="utf-8">
<input type="hidden" name="csrf_token" value="SruPnWLxKQsADilCyvGFbRIetmjwBqNgpJVhHZoMfYzkOTdXcaEU">
<div class="row">
<div class="form-group col-xs-3">
<label for="username">Username</label>
<input type="text" class="form-control" id="username" name="username">
</div>
</div>
<div class="row">
<div class="form-group col-xs-3">
<label for="username">Password</label>
<input type="password" class="form-control" id="password" name="password">
</div>
</div>
<input type="submit" value="Login" class="btn btn-primary">
</form>
Рассмотрим приведенный выше код, и мне нужно получить только входные элементы из него. Мое выражение для этой операции **response.xpath('//form[child::input]').extract()**
. Может кто-нибудь, пожалуйста, помогите мне исправить выражение
Я собираюсь войти на любой сайт, используя запрос python. Для этого я планирую вырезать все входные элементы (включая скрытые входные данные) в форме, где я дам имя формы в качестве параметра XPath. После этого я могу заполнить данные формы своими учетными данными, а также передать маркер csrf, если он есть.
Мой ввод для этой операции
имя пользователя, пароль и имя_файла
from scrapy.http import FormRequest
from scrapy.utils.response import open_in_browser
class QuotesSpider(Spider):
name = 'quotes'
start_urls = ('http://quotes.toscrape.com/login',)
def parse(self, response):
token = response.xpath('//*[@name="csrf_token"]/@value').extract_first()
return FormRequest.from_response(response,
formdata={'csrf_token': token,
'password': 'foobar',
'username': 'foobar'},
callback=self.scrape_pages)
def scrape_pages(self, response):
open_in_browser(response)
Могут ли некоторые помочь мне изменить приведенный выше код в соответствии с моими требованиями. Ваше время и руководство ценится