如何解决如何在网站上使用请求python填写文本框
我正在尝试将乳胶方程式转换为python中的图像。我尝试了某些转换器,但没有解决。我发现这个网站https://latex2png.com/可以为我转换乳胶字符串,但是我不确定如何通过python填写文本框。我知道请求使用的是http,但我不知道要填写的表格。有人知道该怎么做吗?
解决方法
更新
我想出了如何仅使用requests
来做到这一点,它更容易,更快捷:
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
import requests
FORMULA = '\\sum _ {i = 1} ^ { m } \\operatorname{log} p ( x ; \\theta)'
data = {
"auth" : { "user" : "guest","password" : "guest"},"latex" : FORMULA,"resolution" : 600,"color" : "000000"
}
resp = requests.post('https://latex2png.com/api/convert',json=data,allow_redirects=True,verify=False)
results = resp.json()
if results['result-code'] == 0:
url = 'https://latex2png.com' + results['url']
resp = requests.get(url,verify=False)
png = resp.content
with open('latex.png','wb') as f:
f.write(png)
print('Image saved.')
else:
print(results['result-message'])
注意
在不使用verfy=False
的情况下,出现以下异常:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
我已通过浏览器确认证书有效。由于禁用证书检查通常不是一个好习惯,尽管在这种情况下似乎比较安全,但是我们可以按以下步骤添加丢失的证书:
- following URL上有使用各种浏览器从网站下载SSL证书的说明。您需要创建一个
.pem
文件。为此,您需要使用Firefox。也有各种选择。进入“证书”页面时,选择Let's Encrypt Authority X3
,然后单击PEM (chain)
下载链接。这样会在您选择的目录中创建文件latex2png-com-chain.pem
。 - 无论来源是否指定
verify=False
,都应将其替换为verify='/path-to/latex2png-com-chain.pem'
如果这很麻烦,这是latex2pmg-com-chain.pem
的内容:
-----BEGIN CERTIFICATE-----
MIIFUjCCBDqgAwIBAgISBDNrXu0HGJnfae4oRF0HS1MwMA0GCSqGSIb3DQEBCwUAMEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQDExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDA5MjkxNTA2MTdaFw0yMDEyMjgxNTA2MTdaMBgxFjAUBgNVBAMTDWxhdGV4MnBuZy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUqji1n3TXwlCdLtEM+lhMVvyTk5DP3zM8oS3t/3AdB2qUA1bCj1hYXLzmrF1a7s8xzvyeAqTz9IPMuwfaoVNeDTLpl+KfwjuD99TrrRm6lNUcjrxeN55s7t3TM4T4Oomnn7ve+ldc+9BnnZsQSqvdgwZY6VjgqvB6Pimw1c8hFTq+zUz1uJHIrSpE55sMJTqnfYSWzelvmzIgcSn+mSZLYOlr5z3gN5x3aOgYtTx+aYi4Ns3TEXNR/eqnxzOpMI9P6hZ5UGs0Vi/j6sQQc1nEhhc8ddpxLeGNF0Qj217RzgWQWHiTuc1u+7//q/WQWNrRt4R5lJ9AQoEzRO+7HadHAgMBAAGjggJiMIICXjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFKaJmoHjTE93A7alZiUawAnqaAEkMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMG8GCCsGAQUFBwEBBGMwYTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNyeXB0Lm9yZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgzLmxldHNlbmNyeXB0Lm9yZy8wGAYDVR0RBBEwD4INbGF0ZXgycG5nLmNvbTBMBgNVHSAERTBDMAgGBmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB2AF6nc/nfVsDntTZIfdBJ4DJ6kZoMhKESEoQYdZaBcUVYAAABdNqdVBoAAAQDAEcwRQIgfP9e7demogIXl0FNaqqil6RMyz60bQEfsAM1jDEtZvgCIQCnvcQ1tC25GX2hRlzrSQZJ+M9Aj/ptzgPKEUeYrtg3mQB2ALIeBcyLos2KIE6HZvkruYolIGdr2vpw57JJUy3vi5BeAAABdNqdU/YAAAQDAEcwRQIgZCI1hyuxD2bnVYhE/AMh7klRGDvuKN2MlSO/K1mKzvACIQCmPglG7ZMWTGSRsUY56KpZG7HcdFonh+ao0vzo0nXEsTANBgkqhkiG9w0BAQsFAAOCAQEAWmNzDoCno1ueQCcMy8usDHUbIdr2gifu5z2LpzDiTdx7gvx2RcojtlgAoxuaTlocwPQSfW21eaq5aDAQ46JaldvGzdsqgPJlIJ91MRyWccHX+AMxxf05PiEKAe4MgLUJSb6+mwmZ0WEaBxZLcKp4vmYHBfOTvja3sOzQSydLSvyQE685f0U+PaoB3uWX2uDpobkwzLF7c7wGEY0mHsmIRBAB5kAyP0MLb2W5pV+M2vuYxVemVq2ah4tYSxc3cSjNS9r5N+A9i69ukIzNzArSXzyhDqbkexL9w2aik3F0gt8G/WgouhjEwBGDAO3YUiYRdvI7khpQTx1/re2Tpm/MXQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0NlowSjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMTGkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EFq6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWAa6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIGCCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNvbTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9kc3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAwVAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcCARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwuY3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsFAAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJouM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwuX4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlGPfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----
使用硒和请求
以下是完整的代码:
- 使用硒清除当前默认的乳胶配方并输入您选择的配方。
- 等待生成新的PNG文件。
- 获取新的PNG文件的URL。
- 使用
requests
包将PNG文件下载到当前目录中的latex.png
。
该代码用于驱动Chrome,但是您可以下载任意选择的浏览器的驱动程序。
from selenium import webdriver
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
from selenium.webdriver.common.keys import Keys
import requests
import time
FORMULA = '\\sum _ {i = 1} ^ { m } \\operatorname{log} p ( x ; \\theta)'
options = webdriver.ChromeOptions()
options.add_argument("headless")
options.add_experimental_option('excludeSwitches',['enable-logging'])
driver = webdriver.Chrome(options=options)
try:
driver.implicitly_wait(3) # wait up to 3 seconds before calls to find elements time out
driver.get('https://latex2png.com/')
# current png url:
url_old = driver.find_element_by_xpath('/html/body/div[4]/div[5]/img').get_attribute('src')
text_area = driver.find_element_by_id('form_latex')
text_area.send_keys(Keys.CONTROL,'a');
text_area.send_keys(FORMULA)
driver.find_element_by_id('convert_button').click()
t0 = time.time()
while True:
# wait for new png to be generated:
url = driver.find_element_by_xpath('/html/body/div[4]/div[5]/img').get_attribute('src')
if url != url_old:
break
time.sleep(.1)
t1 = time.time()
if t1 - t0 > 10:
raise Exception('Timeout waiting for new png to be generated.')
resp = requests.get(url,'wb') as f:
f.write(png)
print('Image saved.')
finally:
driver.quit()
,
您实际上并不想以“人为”方式填写框。 您正在寻找的是将POST请求发送到服务器。最简单的方法如何了解您需要的请求: 转到站点,在浏览器中打开“网络”选项卡,填充框并单击按钮。检查添加到POST请求的参数类型。检查您收到的回复类型并从中提取png文件。 然后,只需使用请求在python代码中重新创建POST请求即可。
如果您要填充这些框(请参见机器人对其进行填充),则可以使用selenium。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。