Моя цель - очистить данные с consumerreports.com, поэтому я использую «запросы» и «Beautifulsoup» для этого проекта.Если оставить в стороне, у меня много проблем с успешным входом на customerreports.com через запросы.
Вот мой код: я создал два текстовых файла, в которых я пишу сообщение и ответ, чтобы я мог проверить, успешно ли он вошел в систему.
import requests
import os.path
#declares any necessary variables
#file1, file2 to check if login is successful
save_path = '/Users/myName/Documents/Webscraping Project/'
login_url = 'https://www.consumerreports.org/cro/index.htm'
my_url = 'https://www.consumerreports.org/cro/index.htm'
pName = os.path.join(save_path, 'post text file'+".txt")
rName = os.path.join(save_path, 'response text file'+".txt")
post_file = open(pName, "w")
response_file = open(rName, "w")
#login using Session class from Requests package
with requests.Session() as s:
payload = {"userName":"myName@university.edu","password":"my_password"}
p = s.post(login_url, data=payload)
print(p.text)
r = s.get(my_url)
#saves files to see if login was successful
post_file.write(str(p.text.encode('utf-8')))
response_file.write(str(r.text.encode('utf-8')))
post_file.close()
response_file.close()
print('Files created.')
Вот что я получил:
<!DOCTYPE html>
<html>
<head>
<title>405 Not allowed.</title>
</head>
<body>
<h1>Error 405 Not allowed.</h1>
<p>Not allowed.</p>
<h3>Guru Meditation:</h3>
<p>XID: #some number </p>
<hr>
<p>Varnish cache server</p>
</body>
</html>
Кроме того, я проверил содержимое файла ответа text.txt и через базовую функцию ctrl + f смог определить, что система не успешно вошла в систему.
Кажется, что веб-сервер не принимает метод 'post', по крайней мере для этого конкретного URL, и именно поэтому он возвращает ошибку.Однако я не знаю, как действовать дальше.Я посмотрел в Интернете, и кто-то предложил использовать
response = requests.get(login_url, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'})
, чтобы создать пользовательский агент для входа в систему или что-то еще.Я все еще довольно плохо знаком с Python, поэтому любые советы будут оценены.