Python 如何将数据发布到可立即重定向到另一个网站的网站

Python 如何将数据发布到可立即重定向到另一个网站的网站,python,python-3.x,web-scraping,Python,Python 3.x,Web Scraping,我想对此进行批处理,但它没有为用户提供批处理模式,因此我考虑使用python提交任务 我不太熟悉python的web抓取。我在Youtube上看了几个视频,也在这里查看了很多帖子,我可以通过在浏览器上单击鼠标成功登录一些网站,检查元素,进入网络,查看我应该在POST方法中输入哪些数据 但是,在您提交任务后,该网站将立即为您打开一个新的url,并且在网络流中没有任何帖子的迹象。我已经花了几个小时尝试,但仍然不知道如何处理这个网站。有人能帮我吗 在数据字典中,我已经删除了电子邮件,你可以输入自己的电

我想对此进行批处理,但它没有为用户提供批处理模式,因此我考虑使用python提交任务

我不太熟悉python的web抓取。我在Youtube上看了几个视频,也在这里查看了很多帖子,我可以通过在浏览器上单击鼠标成功登录一些网站,检查元素,进入网络,查看我应该在POST方法中输入哪些数据

但是,在您提交任务后,该网站将立即为您打开一个新的url,并且在网络流中没有任何帖子的迹象。我已经花了几个小时尝试,但仍然不知道如何处理这个网站。有人能帮我吗

在数据字典中,我已经删除了电子邮件,你可以输入自己的电子邮件地址。如果您成功地将任务发布到此服务器,您应该会收到一封电子邮件,在任务完成时通知您

导入请求
url1=http://rna.physics.missouri.edu/vfold3D/index.html'
序列='UCGGACCAUCAGGAGAAUCCAAUGGAAAACAGGAAACCCUAAGCAAUUUGAAGUUAAAACCGA'
bps=‘.((((((((…))))(((((((…)))((((…))))((((((…))))))…)’
jobname=‘一次试验’
数据={}
数据['sequence']=序列
数据['bps']=bps
数据['jobname']=jobname
数据['email']=''#提供接收结果的电子邮件地址
req1=请求.post(url1,数据=数据)
打印(要求1.状态\代码)
状态码是200,但我没有收到任何电子邮件,所以我认为我没有成功地向其发布任何内容


正如我所说,我不知道应该发送到服务器的正确数据是什么,因为我在网络流中没有看到任何帖子的痕迹,而且我从来没有学习过html,所以对这个网站的结构一无所知

当您使用
jobname='A trial'
参数打印响应
req1.contents
时,您会得到一个错误页面,指出job name中有空格/无效字符

Please wait...<br>
<br>
Your input jobname: <br>
A trial
<br>
<br>
<font color="red" size="3">contains non-alphanumeric characters.</font><br>
<br>
</body>
</html>
然后,您可以访问该URL并获取
.pdb
文件

import requests
import re
from urllib.parse import urljoin

res =  requests.get('http://rna.physics.missouri.edu/OUTPUT/3D_Atrial.E6SY.html')
pdb_path = re.search('<a href="(.*\.pdb)">', res.text).group(1)
pdb_url = urljoin(res.url, pdb_path)
print(pdb_url)


注意:由于这些页面看起来不会很快被重新设计,而且结构相对简单,因此使用
re
删除一些URL完全可以。但是使用BeautifulSoup或其他HTML解析器是正确的方法。

当您使用
jobname='A trial'
参数打印响应
req1.contents
时,您会看到一个错误页面,指出作业名称中有空格/无效字符

Please wait...<br>
<br>
Your input jobname: <br>
A trial
<br>
<br>
<font color="red" size="3">contains non-alphanumeric characters.</font><br>
<br>
</body>
</html>
然后,您可以访问该URL并获取
.pdb
文件

import requests
import re
from urllib.parse import urljoin

res =  requests.get('http://rna.physics.missouri.edu/OUTPUT/3D_Atrial.E6SY.html')
pdb_path = re.search('<a href="(.*\.pdb)">', res.text).group(1)
pdb_url = urljoin(res.url, pdb_path)
print(pdb_url)


注意:由于这些页面看起来不会很快被重新设计,而且结构相对简单,因此使用
re
删除一些URL完全可以。但是使用BeautifulSoup或其他HTML解析器是正确的方法。

它可以工作!非常感谢你的帮助!我可以问一个附带问题吗?为什么我在点击提交后在网络流中看不到任何帖子的痕迹?它实际上会显示出来。当您提交表单并弹出一个新页面时,切换到该选项卡,打开open Developer Tools的网络选项卡。然后刷新页面,它会询问您是否要重新提交表单,确认。您将看到一个空的POST请求。它会一直空着,直到服务器接受它,然后你才能看到它的细节。这太棘手了(对于像我这样的新手来说)。我确实查看了弹出的页面,但在网络中什么也没看到。我从未想过刷新页面以查看POST请求。顺便问一下,如果刷新页面后仍然没有帖子(我不知道这是否可能),那么如何确定要输入哪些数据(对于这个网站,我通过检查页面的源代码并查找输入来确定),以及要添加哪些标题?这里很明显,引用者应该是原始站点,但是如果一个更复杂的情况呢?它必须在某个地方。记住勾选Persist logs(或类似的东西)复选框以保留日志,然后使用过滤器对其进行筛选。你可以在源页面或像这样的弹出页面上找到它。明白了。非常感谢您的耐心和详细的解释!它起作用了!非常感谢你的帮助!我可以问一个附带问题吗?为什么我在点击提交后在网络流中看不到任何帖子的痕迹?它实际上会显示出来。当您提交表单并弹出一个新页面时,切换到该选项卡,打开open Developer Tools的网络选项卡。然后刷新页面,它会询问您是否要重新提交表单,确认。您将看到一个空的POST请求。它会一直空着,直到服务器接受它,然后你才能看到它的细节。这太棘手了(对于像我这样的新手来说)。我确实查看了弹出的页面,但在网络中什么也没看到。我从未想过刷新页面以查看POST请求。顺便问一下,如果刷新页面后仍然没有帖子(我不知道这是否可能),那么如何确定要输入哪些数据(对于这个网站,我通过检查页面的源代码并查找输入来确定),以及要添加哪些标题?这里很明显,引用者应该是原始站点,但是如果一个更复杂的情况呢?它必须在某个地方。记住勾选Persist logs(或类似的东西)复选框以保留日志,然后使用过滤器对其进行筛选。你可以在源页面或像这样的弹出页面上找到它。明白了。非常感谢您的耐心和详细的解释!
http://rna.physics.missouri.edu/OUTPUT/3D_Atrial.E6SY.3d_struct.pdb