如何使用请求库在Python中将密钥发送到网页? [英] How to use request library to send keys to web page in Python?

查看:92
本文介绍了如何使用请求库在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆