#python #pandas #web-scraping #http-post
#python #pandas #веб-очистка #http-post
Вопрос:
Я пытаюсь найти способ вставить некоторые сделки (которые я уже правильно отформатировал) в поле этого онлайн-калькулятора налога на прирост капитала в Великобритании — http://www.cgtcalculator.com/calculator.aspx — а затем нажмите на кнопку «Рассчитать», чтобы, наконец, получить информацию в окне результатов.
Пример некоторых сделок (не моих сделок) — эти данные в настоящее время находятся во фрейме данных:
B 01/12/2000 BARC 3000 4.82 15.00 72.3
B 02/12/2000 BARC 5000 4.825 15.00 120.62
B 03/09/2002 VOD 18000 3.04 10.00 273.60
B 15/01/2003 BP. 5000 3.75 10.00 93.75
B 24/03/2003 BP. 3000 3.82 10.00 57.30
S 14/04/2003 BARC 6000 5.52 15.00 0.00
S 23/02/2004 VOD 9000 3.62 10.00 0.00
S 24/02/2004 VOD 9000 3.625 10.00 0.00
S 15/07/2005 BP. 8000 6.28 10.00 0.00
B 22/01/2007 BP. 5000 5.50 10.00 124.20
B 22/06/2009 BP. 2000 5.02 10.00 50.20
S 24/12/2012 BP. 5000 4.336 10.00 0.00
Когда я вставляю указанные выше данные в поле ввода и нажимаю «Формат / сортировка», я вижу, что они отображаются в исходном коде html как таковые:
<textarea name="TEXTAREA1" id="TEXTAREA1" class="trades" cols="114">
"Trade Data Appears Here"
Затем, когда я нажимаю на кнопку «Рассчитать», появляется несколько <span>
мигающих тегов. Результаты можно увидеть Network
на вкладках and then Response
.
Каков наилучший способ вставки данных о сделках в поле веб-страницы, нажатия кнопки «Рассчитать» и последующего получения результатов на Python? Будет post.request
ли работать? Я просто следую некоторым рекомендациям здесь, поскольку я новичок в Python, но понимаю, что то, о чем я прошу, может быть невозможным или даже немного слишком сложным для меня.
Я пробовал следующее, но я только возвращаю содержимое веб-страницы.
import requests
import pandas as pd
data = pd.read_csv("/Users/Test.csv")
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'}
url = 'http://www.cgtcalculator.com/calculator.aspx'
response = requests.post(url, data=data, headers=headers)
print(response.text)
Комментарии:
1. Вам либо нужно
post
указать адрес, на которыйcalculator.aspx
отправляется та же информация, либо вы хотите использовать пакет управления пользовательским интерфейсом, например, Selenium, чтобы вставить данные и нажать кнопку для вас.2. @QuangHoang Спасибо за ответ. Прежде чем я начну работать с Selenium, как вы думаете, возможно ли на самом деле то, что я пытаюсь сделать?
3. С Selenium, конечно, вы просто автоматизируете взаимодействие с пользовательским интерфейсом, если только на веб-сайте нет какой-либо идентификации человека, например, CAPCHA. При
requests.post
этом вам может потребоваться передать правильные данные заголовка / авторизации.4. @QuangHoang Это здорово, спасибо, да, я не думаю
requests.post
, что это сработает, поэтому я попробую Selenium!