我有一个网站和一个输入数据,我需要使用网页抓取填写该网站。我正在使用 post 方法,但我没有得到我想要的预期输出。 运行下面给出的代码后,我得到了一些数据,但我使用 inspect 看到的网站响应是不同的。 输入数据为 CP 编号 = 16803
法典:
import requests
from bs4 import BeautifulSoup
url = "https://www.icsi.in/student/Members/MemberSearch.aspx"
payload = {'dnn$ctr410$MemberSearch$txtCpNumber': 16803}
r = requests.post(url, params=payload)
soup = BeautifulSoup(r.content, 'html.parser')
print(soup)
预期输出
发布输入数据后,我将获得用户名,地址等
更改
r = requests.post(url, params=payload)
自
r = requests.post(url, data=payload)
params
将转换为查询字符串。在您的情况下,您获得了网址u'https://www.icsi.in/student/Members/MemberSearch.aspx?dnn%24ctr410%24MemberSearch%24txtCpNumber=16803'
更新
这是一个用js编写的简单抓取器,它使用木偶。
const puppeteer = require('puppeteer');
const URL = 'https://www.icsi.in/student/Members/MemberSearch.aspx';
(async () => {
const browser = await puppeteer.launch({
headless: false // for debugging
});
const page = await browser.newPage();
await page.goto(URL);
await page.focus('#dnn_ctr410_MemberSearch_txtFirstName');
page.keyboard.type('First Name');
await page.click('#dnn_ctr410_MemberSearch_btnSearch');
const html = await page.evaluate(() => document.body.innerHTML);
await browser.close();
})();
使用以下命令运行:
npm i puppeteer
node scraper.js