Я пытаюсь создать соскабливание на странице с помощью запрос библиотеки python, но получаю ошибки (например, Плохой запрос или Метод не разрешен).
На странице есть две формы: одна с get, а другая с post (что я и желаю). Я передавал значения в текстовые поля, используя «запросы данных».
Я не хочу передавать изображение для формы, только текстовое поле.
У меня в форме шесть кнопок, для каждой кнопки у меня разное значение.
<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>
#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 (Метод ...) Используя сообщение: status_code: 400 (неверный запрос)






Я не вижу ссылок на /page1 или /page2 в вашем примере, но rs.get, вероятно, должен использовать именованный параметр params вместо data и должен соответствовать URL-адресу первой формы, тогда как для URL-адреса второй формы вам необходимо использовать метод rs.post, где можно использовать данные.
Я использовал post, но у меня была ошибка, поэтому я попробовал с get и получил еще одну ошибку. Я обновил вопрос с соответствующими ошибками. Srry. Об этом: "Я не вижу ссылки на / page1 или / page2 в вашем примере". Обе формы находятся внутри страницы: www.exampleurl.com/site, поэтому у меня есть 7 кнопок, 6 со значениями для второй формы и одна для первой формы.
@PedroAugusto, когда вы загружаете exampleurl.com/site в свой браузер, заполняете поля формы form enctype = "multipart/form-data" action = "/page1" method = "GET" и нажимаете кнопку «Отправить», отправленные составные данные будут добавлены в качестве параметров в запрос GET к exampleurl.com/page1 вашим браузером. Это поведение, которое вам нужно воспроизвести в своем коде.
Форма, которую я действительно хочу, связана с публикацией, я пробовал использовать URL-адрес страницы, а также URL-адрес действия, и в обоих случаях возвращал мне ошибки, как я сказал ранее:. Использование get: status_code: 405 (Метод ...) Использование post: status_code: 400 (неверный запрос)
Думаю, я нашел ответ. Похоже, что селен плохо работает на страницах, которые работают с фоном js. Я использую селен, и проблем с ним нет.
Привет, добро пожаловать в Stack Overflow. Формулировка вашего ответа не имеет смысла: вы заявляете, что Selenium плохо работает с некоторыми функциями JS, а затем вы заявляете, что используете Selenium и не имеете с ним проблем. Второе предложение логически не следует из первого.
rs.get? должен быть rs.post