为 requests.post 方法进行 Webscraping 时出错

Getting error while Webscraping for a requests.post method

我正在尝试为“DELHI”的州办公室提取数据。但是,我的代码无法正常工作。我确定我的 python 代码中的数据参数不正确。我已经导入了所有pandas、beautifulSoup、请求等 运行 代码之前所需的库。

r = requests.get('https://search.epfindia.gov.in/locate_office/office_location.php')
def get_all_forms(url):
    soup = BeautifulSoup(r.content, "html.parser")
    return soup.find_all('form')
details = {}
action = form.attrs.get("action").lower()
method = form.attrs.get("method", "get").lower()
State_value = "Delhi"
district_value = "East Delhi"
Pin_value = "110032"
inputs = [State_value, district_value, Pin_value]
fetchdata = requests.post(form, data = inputs)
print (fetchdata.text)

该网站如下所示: https://search.epfindia.gov.in/locate_office/office_location.php

在表格中,有一个 State/UT、District 和 PIN/Area 字段。每个州都有各自的地区。 PIN/Area 字段不可见,但对于某些州,如“DELHI”,在 selecting 地区字段后,PIN/Area 字段出现,我们需要 select 适当的 PIN 码。 select 从下拉列表中选择选项后,我们需要提交表单,它会为 selected 选项提供经过过滤的 table。

我正在尝试提取一个州某个地区的所有办公地址。请帮助我构建代码。如果你把代码写给我,那么我会研究代码并了解我哪里出错了。否则,如果有任何关于通过网络表单 post 方法进行此类网络抓取的研究 material,请告诉我。我会研究它们,然后再试一次。谢谢。

要获取特定 PIN 的数据,您可以使用此示例:

import requests
from bs4 import BeautifulSoup


post_url = "https://search.epfindia.gov.in/locate_office/resulttable.php"
data = {
    "submit1": "submit1",
    "state": "DELHI",
    "district": "EAST DELHI",
    "pin_area": "110032",
}

soup = BeautifulSoup(requests.post(post_url, data=data).content, "html.parser")

for td in soup.select("td.large_font"):
    print(td.text)

打印:

DSIIDC Facility Centre Building, Flatted Factory Complex,
2nd & 3rd Floor, Jhilmil Industrial Area,
New Delhi, DELHI
Email: sro.laxminagar@epfindia.gov.in

Bhavishya Nidhi Bhawan, 8 th Floor, 28,Community Centre,
Wazirpur Industrial Area,
Delhi, DELHI
Email: acc.dlut@epfindia.gov.in