我想从网站https://xlnindia.gov.in/frm_G_Cold_S_Query.aspx抓取数据。我必须将州选择为德里,将地区选择为 Adarsh Nagar(4),然后单击搜索按钮,然后抓取所有信息。
到目前为止,我尝试使用下面给出的代码作为
<div id="rating-bar"></div>
错误信息为“ HTTPS 443 SSL ”,我使用“ verify = False
解决了该错误import requests
from bs4 import BeautifulSoup
错误:响应[500]
soup2
错误: 无效的回发或回调 论点。使用
在配置中或<%@页面 页面中的EnableEventValidation =“ true”%>。为了安全起见, 此功能验证回传或回调事件的参数 源于最初呈现它们的服务器控件。如果 数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation方法以 注册回发或回调数据以进行验证。
有人可以帮我刮擦它或完成它吗。
(我只能使用 REQUEST 和 BEAUTIFULSOUP 库,没有SELENIUM,MECHANIZE等库。)
答案 0 :(得分:1)
请尝试使用以下脚本来获取要填充的表格结果,方法是从该网页中选择两个下拉菜单项。事实证明,您必须随后发出两个发布请求才能填充结果。
import requests
from bs4 import BeautifulSoup
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
url = 'https://xlnindia.gov.in/frm_G_Cold_S_Query.aspx'
with requests.Session() as s:
s.headers['User-Agent'] = 'Mozilla/5.0'
resp = s.get(url,verify=False)
soup = BeautifulSoup(resp.text,"lxml")
dictinfo = {i['name']:i.get('value','') for i in soup.select('input[name]')}
dictinfo['ddlState'] = 'DL'
res = s.post(url,data=dictinfo)
soup_obj = BeautifulSoup(res.text,"lxml")
payload = {i['name']:i.get('value','') for i in soup_obj.select('input[name]')}
payload['ddldistrict'] = 'ADN'
r = s.post(url,data=payload)
sauce = BeautifulSoup(r.text,"lxml")
for items in sauce.select("#dgDisplay tr"):
data = [item.get_text(strip=True) for item in items.select("td")]
print(data)
您可能会在控制台中看到的输出如下:
['Firm Name', 'City', 'Licences', 'Reg. Pharmacists / Comp. Person']
['A ONE MEDICOS', 'DELHI-251/1, GALI NO.1, KH, NO, 739/251/1, NEAR HIMACHAL BHAWAN,SARAI PIPAL THALA, VILLAGE AZAD PUR,', 'R - 2', 'virender kumar, DPH, [22295-17/10/2013]']
['AAROGYAM', 'DELHI-PVT. SHOP NO. 1, GF, 121,VILLAGE BHAROLA', 'R - 2', 'avinesh bhadoriya, DPH, [27033-]']
['ABCO INDIA', 'DELHI-SHOP NO-452/22,BHUSHAN BHAWAN RING ROAD,FLYOVER AZAD PUR', 'W - 2', 'sanjay dubey , SSC, [C-P-03/01/1997]']
['ADARSH MEDICOS', 'DELHI-NORTHERN SIDE B-107, GALI NO. 1,,MAJLIS PARK, VILLAGE BHAROLA,', 'R - 2', 'dilip kumar, BPH, [28036-11/01/2018]']