如何使用Web Scraping python将数据发布到网站并获取网站内容

时间:2018-09-27 05:39:20

标签: python web-scraping beautifulsoup

我有一个网站和一个输入数据,我需要使用Web Scraping填写该网站。我使用的是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)

预期产量

  

输入数据后,我将得到用户名,地址等

1 个答案:

答案 0 :(得分:1)

更改

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'

更新

这是一个使用puppeteer用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