Использование std::stringstream
, поскольку вы отлично работаете, и делайте именно то, что вы хотели. Если вы ищете другой способ сделать что-то, вы можете использовать std::find()
/ std::find_first_of()
и std::string::substr()
.
Вот пример:
#include
#include
int main()
{
std::string s("Somewhere down the road");
std::string::size_type prev_pos = 0, pos = 0;
while( (pos = s.find(' ', pos)) != std::string::npos )
{
std::string substring( s.substr(prev_pos, pos-prev_pos) );
std::cout << substring << '\n';
prev_pos = ++pos;
}
std::string substring( s.substr(prev_pos, pos-prev_pos) ); // Last word
std::cout << substring << '\n';
return 0;
}
Вместо этого вызывается ваша ck
переменная payload
, как в python-запросах docs:
payload = {'inUserName': 'USERNAME/EMAIL', 'inUserPass': 'PASSWORD'}
url = 'http://www.locationary.com/home/index2.jsp'
requests.post(url, data=payload)
Узнайте имена входов, используемых в форме веб-сайтов для имен пользователей <...name=username.../>
и паролей <...name=password../>
, и замените их в приведенном ниже скрипте. Также замените URL-адрес на нужную страницу для входа в систему.
login.py
#!/usr/bin/env python
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
payload = { 'username': 'user@email.com', 'password': 'blahblahsecretpassw0rd' }
url = 'https://website.com/login.html'
requests.post(url, data=payload, verify=False)
Использование disable_warnings(InsecureRequestWarning)
отключит любое вывод из сценария при попытке входа на сайты с непроверенными сертификатами SSL.
Дополнительно:
Чтобы запустить этот сценарий из командной строки в системе на базе UNIX, поместите его в каталог, то есть home/scripts
, и добавьте этот каталог в свой путь в ~/.bash_profile
или аналогичный файл, используемый терминалом.
# Custom scripts
export CUSTOM_SCRIPTS=home/scripts
export PATH=$CUSTOM_SCRIPTS:$PATH
Затем создайте ссылку на этот сценарий python внутри home/scripts/login.py
ln -s ~/home/scipts/login.py ~/home/scipts/login
Закройте свой терминал, запустите новый, login
Позвольте мне попытаться сделать это простым, предположим, что URL-адрес сайта http://example.com/ , и давайте предположим, что вам нужно зарегистрироваться, заполнив имя пользователя и пароль, поэтому мы перейдем к теперь на странице входа в систему http://example.com/login.php и просмотрите исходный код и найдите URL-адрес действия, который он будет в теге формы, например
<form name="loginform" method="post" action="userinfo.php">
теперь возьмите userinfo.php, чтобы сделать абсолютный URL-адрес, который будет « http://example.com/userinfo.php », теперь запускает простой скрипт python
import requests
url = 'http://example.com/userinfo.php'
values = {'username': 'user',
'password': 'pass'}
r = requests.post(url, data=values)
print r.content
Я надеюсь, что это когда-нибудь поможет кому-то.
Я знаю, что вы нашли другое решение, но для таких, как я, которые находят этот вопрос, ищет то же самое, его можно достичь с помощью запросов следующим образом:
Во-первых, как это сделал Маркус, проверьте источник формы входа, чтобы получить три части информации - URL-адрес, на который отправляется форма, и атрибуты имени полей имени пользователя и пароля. В его примере они являются inUserName и inUserPass.
После того, как вы это получили, вы можете использовать экземпляр requests.Session()
, чтобы сделать запрос на отправку URL-адреса входа, в котором ваши данные для входа указаны в качестве полезной нагрузки.
Предполагая, что попытка входа в систему была успешной, вы можете просто использовать экземпляр сеанса, чтобы выполнить запросы из экземпляра сеанса. для дальнейших запросов на сайт. Файл cookie, который идентифицирует вас, будет использоваться для авторизации запросов.
Пример
import requests
# Fill in your details here to be posted to the login form.
payload = {
'inUserName': 'username',
'inUserPass': 'password'
}
# Use 'with' to ensure the session context is closed after use.
with requests.Session() as s:
p = s.post('LOGIN_URL', data=payload)
# print the html returned or something more intelligent to see if it's a successful login page.
print p.text
# An authorised request.
r = s.get('A protected web page url')
print r.text
# etc...