multipart-form-data, метод POST, с несколькими формами на странице - PullRequest
0 голосов
/ 18 ноября 2018

Проблема

Я пытаюсь сделать очистку на странице, используя python lib запроса , однако я получаю ошибки(Например, Неверный запрос или Метод не разрешен ).

  • Страница имеет две формы: одна с get, а другая с post(что я хочу).Я передал значения в текстовые поля, используя «запросы данных».

  • Я не хочу передавать изображение для формы, просто текстовое поле.

  • У меня есть шесть кнопок в форме, для каждой кнопки у меня есть различное значение.


HTML-код

<form enctype="multipart/form-data" action="/page1" method="GET"> ... </form>
...
<form enctype="multipart/form-data" action="/page2" method="POST"> 
  <input type="file" name="smiles_file">
  <input type="text" name="smiles_str">
  ...
  <button name="pred_type" type="submit" value="adme"> BT1 </button>
  <button name="pred_type" type="submit" value="toxicity"> BT2 </button>
</form>

Код Python3

#imports
import requests
from bs4 import BeautifulSoup as bs

#commmon vars
url = 'www.exampleurl.com/site'
hd  = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36"
}
dt  = {
'smiles_str': 'CC(=O)OC1=CC=CC=C1C(=O)O',
'pred_type': 'adme'
}

#scraping
with requests.Session() as rs:
    result = rs.get(url, data=dt, headers=hd)
    print ("Code: %s\nHTML\n%s" % (result.status_code, result.text))

РЕДАКТИРОВАТЬ

Использование get: status_code: 405 (Method ...) Использование post: status_code: 400 (Bad request)

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Я думаю, что нашел ответ.Кажется, что селен не работает хорошо на страницах, которые работают с JS фоном.Я использую селен, и у меня нет проблем с ним.

0 голосов
/ 18 ноября 2018

Я не вижу ссылки на /page1 и /page2 в вашем примере, но rs.get, вероятно, должен использовать именованный параметр params вместо data и должен соответствовать URL первой формы в то время как для второго URL-адреса формы вам нужно использовать метод rs.post, где использование данных вполне допустимо.

...