Я пытаюсь очистить часы работы отделений банка Halifax на их официальном веб-сайте поиска филиалов (https://www.halifax.co.uk/branchfinder/search.asp), но я, должно быть, что-то делаю не так в вызове FormRequest.from_response (), потому что ответ на FormRequestпохоже, что он не изменился по сравнению с исходным ответом.
Если передать значение «почтовый индекс» «EH», то должен быть один результат (Эдинбург, улица Принсес, 131, EH2 4AH), как видно, когда вы делаете то же самоечто-то на сайте, но я ничего не получаю, когда делаю это с помощью FormRequest
Это релевантная часть источника сайта:
<form action="" id="branch-finder-search-form" method="post">
<div style="display:none;" class="notice error" aria-live="assertive"></div>
<div class="field split-2 clearfix">
<div class="split radio">
<div class="field-radio">
<input value="branch" name="searchType" checked id="r1" type="radio"><label for="r1"><span></span>Branch</label>
</div>
<div class="field-radio">
<input value="cash" name="searchType" id="r2" type="radio"><label for="r2"><span></span>Cash Machine</label>
</div>
</div>
</div>
<div class="field split-3 clearfix">
<div class="split">
<label for="street">Street</label><input name="street" id="street" type="text" value="">
</div>
<div class="split">
<label for="town">Town</label><input name="town" id="town" type="text" value="">
</div>
<div class="split last">
<label for="postcode">Post Code</label><input name="postcode" id="postcode" type="text" value="">
</div>
</div>
<div class="field clearfix">
<div class="split btn-submit">
<input id="search" name="search" alt="Search" type="submit" value="Search" class="button button-primary" title="search"><span class="a_hide">ext search</span></input>
</div>
<noscript>
<input value="yes" name="javascriptoff" id="javascriptoff" type="hidden">
<div class="split btn-submit-nonjs">
<input name="nonjsSubmit" type="submit" alt="Search" value="Search" class="button button-primary" title="search"><span class="a_hide">ext search</span></input>
</div>
<div></div>
</noscript>
<div style="display:none" id="no-result">
<p>No Branch Found as per your search criteria</p>
</div>
<div id="branch-finder-results-container">
<hr>
</div>
</div>
</form>
Это мой код до сих пор:
from scrapy.crawler import CrawlerProcess
from scrapy.utils.response import open_in_browser
from scrapy.http import FormRequest
import scrapy
class HalifaxSpider(scrapy.Spider):
name = "halifax"
start_urls = [
"https://www.halifax.co.uk/branchfinder/search.asp"
]
def parse(self, response):
print(response.text)
yield FormRequest.from_response(response, formname='branch-finder-search-form', formdata={"postcode": "EH"}, callback=self.open_in_browser)
def open_in_browser(self, response):
print(response.text)
open_in_browser(response)
crawler = CrawlerProcess()
crawler.crawl(HalifaxSpider)
crawler.start()
Я также попытался передать аргумент clickdata = {"name": "search"}, если кнопка поиска не нажата, но я получаю тот же результат.
Я действительно новичок в веб-поиске в целом, поэтому я просто застрял и не знаю, куда идти. Я прочитал некоторую документацию, но мало информацииили учебники при заполненииЯ выбрал все виды различных форм, так что я в растерянности.
Может кто-нибудь помочь, пожалуйста?