Форма запроса с механическим суппортом не показывает ожидаемых результатов - PullRequest
0 голосов
/ 31 мая 2018

Я новичок в веб-поиске и веб-вещах в целом (но в значительной степени привык к Python), и я хотел бы понять, как это работает для интеграции поиска по сайту в инструменте исследования биоинформатики.

Цель: получить выходные данные формы на http://www.lovd.nl/3.0/search

import mechanicalsoup

# Connect to LOVD
browser = mechanicalsoup.StatefulBrowser()
browser.open("http://www.lovd.nl/3.0/search")

# Fill-in the search form
browser.select_form('#websitevariantsearch')
browser["variant"] = "chr15:g.40699840C>T"
browser.submit_selected()

# Display the results
print(browser.get_current_page())

В выводе я получаю ту же самую страницу (http://www.lovd.nl/3.0/search). Я пробовал со стандартными запросами, но получаю другой видошибки:

from requests import get, Session

url="http://www.lovd.nl/3.0/search"
formurl = "http://www.lovd.nl/3.0/ajax/search_variant.php"
client = Session()

#get the csrf
soup = BeautifulSoup(client.get(url).text, "html.parser")
csrf = soup.select('form input[name="csrf_token"]')[0]['value']

form_data = {
    "search": "",
    "csrf_token": csrf,
    "build": "hg19",
    "variant": "chr15:g.40699840C>T"
}

response = get(formurl, data=form_data)
html=response.content
return html

... и это возвращает только

alert("Error while sending data.");

Поля form_data были взяты из запроса XHR (из вкладки разработчика -> сеть).

Я вижу, что данные отправляются асинхронно через ajax, но я не понимаю практического значения этой информации.

Нужны некоторые указания

1 Ответ

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

MechanicalSoup не поддерживает JavaScript.Веб-сайт, который вы пытаетесь просмотреть, имеет:

<form id="websitevariantsearch"
      action=""
      onsubmit="if ...">

Нет никаких действий в смысле традиционных HTML-форм, но есть фрагмент JavaScript, выполняемый при отправке.MechanicalSoup здесь не поможет.Селен может работать: http://mechanicalsoup.readthedocs.io/en/stable/faq.html#how-does-mechanicalsoup-compare-to-the-alternatives

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...