python - 使用python请求提交搜索表单
问题描述
我需要使用请求从网站上抓取一些数据。网站就像https://www.example.com/tele/search.php
. 该网站有如下部分:
<form action="search-result.php" method="post" name="sub">
<label class="sr-only" for="usrname">Username</label>
<div class="input-group mb-3">
<div class="input-group-prepend">...</div>
<input type="text" class="form-control" name="cnnum" placeholder="322112222 or 3520211114489" aria-label="Username" aria-describedby="basic-addon1">
</div>
<br>
<button type="submit" class="btn btn-danger center-block" style="align-center ">Search</button>
</form>
所以我所做的是:
import requests
from bs4 import BeautifulSoup
S_URL = 'https://example.com/tele/search-result.php'
cnnum = '**********'
login_information = {
'cnnum': cnnum
}
response = requests.post(S_URL, data=login_information)
print(response.content)
但它不起作用并显示不可接受的错误。我是新来的请求如此亲切的帮助。我不想使用硒。我想通过请求来做到这一点。
解决方案
我已经能够找到您所指的网站,我确实看到您传递了正确的POST
请求方法。
您尚未分享Errors
您收到的内容。但我相信你确实有一个问题response code
不是200
,
因此请注意,网站托管在CloudFlare
防火墙保护之后,如果您发出多个POST
请求,这可能会阻止您,因为这是防止浏览器自动化的任务之一。
还要考虑通过一个有效的User-Agent
.
下面是一个简单的POST
请求。
import requests
data = {'cnnum': '322112222'}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0'}
r = requests.post("https://simdatabaseonline.com/tele/search.php", data=data)
print(r.text)
推荐阅读
- r - 失败时报告来自 test_that 块的额外信息
- visual-studio - 无法为 MSBuild 指定解决方案项目
- java - API 端点通过多次调用提供 StackOverFlow 错误
- xml - 如何使用xslt连接其他标签='E'的特定标签的值
- docker-compose - 如何打印替换了 .env 变量的 `docker-compose.yml` 的最终版本?
- java - 火库;添加用户电子邮件标识符而不创建集合
- vba - 将 TXT 导入 Access 时添加字段
- javascript - 如何在打字稿中指定枚举索引的类型
- react-native - 边框半径因宽度和颜色而异 - React Native
- javascript - 防止 IE11 中的 Ctrl+F4 默认浏览器操作事件