![](/img/trans.png)
[英]Is there a way to form batched requests using python requests module ? I want to send multiple homogenous http API requests in a single POST request
[英]send a post request to a website with multiple form tags using requests in python
晚上好,我正在尝试编写一个程序,在名为 hl.co.uk 的网站上提取某些股票和股票的卖出价。您可以想象,您必须搜索要查看其售价的股票。 到目前为止,我的代码如下:
import requests
from bs4 import BeautifulSoup as soup
url = "https://www.hl.co.uk/shares"
page = requests.get(url)
parsed_html = soup(page.content, 'html.parser')
form = parsed_html.find('form', id="stock_search")
input_tag = form.find('input').get('name')
submit = form.find('input', id="stock_search_submit").get('alt')
post_data = {input_tag: "fgt", "alt": submit}
我已经能够提取正确的表单标签和我需要的输入名称。 但该网站在此页面上有多种表格。
我如何使用“post_data”中的数据向该网站提交发布请求到该特定表单,以便它搜索我想要的股票/共享,然后给我下一页?
提前致谢
这是一个非常普遍的问题,您可以使用 google chrome 的 devtools 来解决。 基本上,
1- 导航到您有表单和一堆字段的页面。
2- 然后在Network选项卡下选择XHR选项卡,这将过滤掉所有 Fetch 和 XHR 请求。 这些请求通常在表单提交后发送,大多数情况下它们返回带有结果数据的 JSON。
3- 确保启用左上角的复选框保留日志,以便在提交表单时列表不会刷新。
4- 提交表单,然后您会看到正在提出一堆请求。 检查它们,希望能找到你要找的东西。
在这种情况下,我找到了这个 URL 端点,它给出了结果作为响应。
您可以在此处看到所有查询参数,如companyid、sectorid ,您需要做的是更改这些参数,然后向 URL 发出请求。 然后你会得到相关信息。
为了获取这些companyid和扇区值,您可以发送GET请求的页面https://www.hl.co.uk/shares/search-for-investments?stock_search_input=ftg&x=17&y=23&category_list=CEHGINOPW其中有那些下拉菜单和过滤 html 以在下面的屏幕截图中找到这些值:
您可以查看此 BS4 文档以在 HTML 源代码中查找标签, https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find
实际上,当您从主页提交表单时,它会将您重定向到目标页面,网址如下所示,“https://www.hl.co.uk/shares/search-for-investments?stock_search_input=abc&x= 56&y=35&category_list=CEHGINOPW”,所以在我看来,与其提交主页表单,不如直接用自己的GET参数调用目标页面,你应该调用的url看起来像这样https://www。 hl.co.uk/shares/search-for-investments?stock_search_input=[your_keywords] 。
希望这对你有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.