如何使用请求库在Python中将密钥发送到网页? [英] How to use request library to send keys to web page in Python?
问题描述
我有一个网站 https://www.icsi.in/student/Members/MemberSearch.aspx ,当我访问时,我必须输入" CP号码"作为 16803 ,&点击搜索.之后,学生的信息显示了我需要剪贴的信息.有人可以帮忙如何传递" CP号码"来请求&如何使用请求按"搜索"按钮.
I have a website https://www.icsi.in/student/Members/MemberSearch.aspx which when visited, I've to enter the 'CP number' as 16803, & click on search. After that information of student displays which I need to scrap. Can someone please help how to pass the 'CP number' to request & how to press the 'search' button using request.
到目前为止,我已经尝试使用类名& ID名称以及 request.get()方法的 param 标记中的名称.
So far I've tried using the class name & id name as well in param tag of request.get() method.
import requests
r=requests.get('https://www.icsi.in/student/Members/MemberSearch.aspx',params={'dnn_ctr410_MemberSearch_txtCpNumber':16803})
在上面的代码中,我尝试将param名称用作: [类名& ID名称]
In above code I have tried using param name as: [Class name & id name]
dnn $ ctr410 $ MemberSearch $ txtCpNumber
dnn$ctr410$MemberSearch$txtCpNumber
dnn_ctr410_MemberSearch_txtCpNumber
dnn_ctr410_MemberSearch_txtCpNumber
我不怎么做&我不能像图书馆那样使用硒或机械设备,有人可以帮助我.
I don't how to work it & I can't use selenium or mechanise like library, can someone please help me.
推荐答案
网站提交按钮rendering
js or ajax request
.您应该尝试使用自动化selenium
库.它可以让您剪贴动态的rendering request(js or ajax)
页面数据.
website submit button rendering
js or ajax request
. You should try automation selenium
library. it allows you to scrap dynamic rendering request(js or ajax)
page data.
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Chrome('/usr/bin/chromedriver')
browser.get('https://www.icsi.in/student/Members/MemberSearch.aspx')
reg = browser.find_element_by_name('dnn$ctr410$MemberSearch$txtCpNumber')
reg.send_keys('16803')
sub = browser.find_element_by_class_name('dnnPrimaryAction')
sub.click()
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "rgMasterTable")))
soup = BeautifulSoup(browser.page_source, 'lxml')
table = soup.find("table",{'class':"rgMasterTable"}).find("tr",{'class':"rgRow"})
data = {}
for div in table.find_all("div",{'class':"chart_att"}):
for div2 in div.find_all("div"):
_class = div2.get("class")
if "chart_row" in _class[0]:
key = None
value = None
for td in div2.find_all("td"):
_class1 = td.get("class")
if "chart_head" in _class1[0]:
key = td.text.strip()
else:
value = td.text.strip()
if key is not None and value is not None:
data[key] = value
print(data)
O/P:
{'Organization': 'RAHUL SHINDE AND COMPANY', 'Designation': 'COMPANY SECRETARIES (*)', 'Membership Number': 'A32412', 'CP Number': '16803', 'Benevolent Member': 'No', 'Address': '25/26, 3RD FLOOR, PAREERA BUILDING NAVJEEVAN WADI, KALBADEVI POST DHOBI TALAV, MARINE LINES', 'City': 'MUMBAI', 'Phone': '', 'Email': 'jurisrahul@gmail.com', 'Mobile': '8369683685'}
其中'/usr/bin/chromedriver'
硒Web驱动程序路径.
where '/usr/bin/chromedriver'
selenium web driver path.
下载适用于Chrome浏览器的Selenium Web驱动程序:
http://chromedriver.chromium.org/downloads
为Chrome浏览器安装Web驱动程序:
https://christopher.su/2015/selenium-chromedriver-ubuntu/
硒教程:
https://selenium-python.readthedocs.io/
这篇关于如何使用请求库在Python中将密钥发送到网页?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!