【问题标题】:How to click on the Search company name button,type company name and search using Selenium and Python?如何点击搜索公司名称按钮,输入公司名称并使用 Selenium 和 Python 进行搜索?
【发布时间】:2019-10-06 13:01:20
【问题描述】:

我只是想在搜索按钮上搜索公司名称,输入公司名称然后它会打开该公司的链接,如果存在我尝试了很多方法,总是有问题。 .new 网络抓取

我试过了:

from selenium import webdriver

driver=webdriver.Chrome("C:/Users/RoshanB/Desktop/sentiment1/chromedriver_win32/chromedriver")

driver.get("http://www.careratings.com/brief-rationale.aspx")

但现在我不知道如何点击“搜索公司名称”,输入公司名称并使用 selenium 打开该公司链接

【问题讨论】:

    标签: python selenium selenium-webdriver search web-scraping


    【解决方案1】:

    试试这个:

    from selenium import webdriver
    import time
    from selenium.webdriver.common.keys import Keys
    from bs4 import BeautifulSoup
    from bs4.element import Tag
    
    driver = webdriver.Chrome("C:/Users/RoshanB/Desktop/sentiment1/chromedriver_win32/chromedriver")
    driver.get('http://www.careratings.com/brief-rationale.aspx')
    time.sleep(4)
    
    companyArray = []
    
    try:
        search = driver.find_element_by_name('txtSearchCompany_brief')
        search.send_keys("Reliance Capital Limited")
        search.send_keys(Keys.RETURN)
        time.sleep(4)
        soup = BeautifulSoup(driver.page_source, 'lxml')
        companies = soup.find("table",class_="table1")
    
        for tag in companies.findChildren():
            if isinstance(tag, Tag) and tag.name in 'a' and tag.has_attr('href'):
                url_string = "http://www.careratings.com/"+tag['href'].replace (" ","%20")
    """ **Open pdf file in new tab browser** """
                open_pdf(url_string)
                companyArray.append(tag.text)
    
    except Exception as e:
        print(e)
    
    driver.quit()
    print(companyArray)
    

    O/P

    公司列表:

    ['Reliance Capital Limited', 'Dewan Housing Finance Corporation Limited Ratings of various Securitisation transactions', 'Gamut Infosystems Limited', 'Henraajh Feeds India Private Limited', 'Ramdhan Spintex', 'Tripurashwari Agro Product Private Limited', 'Kalyaneswari Polyfabs Private Limited', 'Rakesh Kumar Gupta Rice Mills Private Limited', 'Sri Satnam Jewells Private Limited', 'Pitambara Foods', 'Sujata Udit Builders Private Limited', 'Kavita Industries', 'Krishna Industries', 'Pallavi Motors Private Limited', 'Anjani Cotgin', 'Sarala Foods Private Limited', 'B.M. Enterprises', 'Bihani Agro Foods Private Limited', 'M V Agrotech Private Limited', 'J.S.R & Company', 'ARG Royal Ensign Developers Private Limited', 'Ranergy Solutions Private Limited', 'RSI Switchgear Private Limited', 'Jyoti Chandrashekhar Bawankule', 'Sadguru Engineers & Allied Services Private Limited', 'R B Rungta Steels & Food Products Private Limited', 'V. N. Marketing', 'Aussee Oats India Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Dewan Housing Finance Corporation Limited', 'Pacific Medical University', 'S. K. Pradhan Construction Company Private Limited', 'Stadmed Private Limited', 'Namra Finance Limited', 'S Kumars Associates', 'R. R. and Company Private Limited']
    

    如果要刮公司名称,需要安装BeautifulSoup包

    pip install beautifulsoup4==4.7.1
    

    地点:

    txtSearchCompany_brief 是输入搜索名称

    table1是搜索结果表类

    下载pdf文件链接:

    Chromedriver, Selenium - Automate downloads

    阅读pdf文件链接:

    How to read line by line in pdf file using PyPdf?

    在新标签页中打开 pdf 文件:

    def open_pdf(url_string):
        driver1 = webdriver.Chrome("C:/Users/RoshanB/Desktop/sentiment1/chromedriver_win32/chromedriver")
        driver1.get(url_string)
    

    【讨论】:

    • 提交按钮后如何打开公司名称的pdf?
    • 我也想给出日期范围,因为它打开了 2017 年的 pdf search1=driver.find_element_by_id('txtfromdate') search1.s​​end_keys("2019-05-17") search2=driver.find_element_by_id( 'txttodate') search2.send_keys("2019-05-20") search=driver.find_element_by_name('txtSearchCompany_brief') search.send_keys("Reliance Capital Limited") search.send_keys(Keys.RETURN) time.sleep(4)但在这显示错误...你能检查一下如何给出日期范围吗
    • 每次打开只有一家公司(即“Reliance Capital Limited”)的 pdf 链接时,您的代码中还有一件事
    • @Roshan 我更新了最后一条评论的答案,在新标签页中打开 pdf 文件。
    • @Roshan 尝试自己解决日期范围问题,因为我们在这里解决与小代码或语法错误相关的问题,而不是编写完整的脚本。
    【解决方案2】:

    这应该对你有用,我已经尝试过使用 id 定位器:

    driver.maximize_window()
    
    driver.get("http://www.careratings.com/brief-rationale.aspx")
    
    
    search_company = driver.find_element_by_id("txtSearchCompany_brief")
    search_company.send_keys("Abc India Limited:")
    
    submit_button = driver.find_element_by_id("btn_submit").click()
    submit_button.click()  
    

    但是,如果公司名称不可用,您将不得不编写代码。

    【讨论】:

    • 如何点击最近两天的日期范围,给出日期范围,例如从(2019-05-17 到 2019-05-19)而不是从列表中搜索公司名称(例如 Ramdhan Spintex, Axis bank limited)如果它存在,它将打开链接搜索,打开 pdf 并提取 rating1 和 rating 操作并从 selenium 更新到我自己的 excel 导入 webdriver driver=webdriver.Chrome("C:/Users/RoshanB/Desktop/ Sentiment1/chromedriver_win32/chromedriver") driver.get("careratings.com/brief-rationale.aspx") 使用上面的链接
    • @Roshan :尝试一下,如果事情不适合您,请询问。我们不能给你写完整的剧本。这对我们不公平。
    • driver=webdriver.Chrome("C:/User/chromedriver_win32/chromedriver") driver.get('careratings.com/brief-rationale.aspx') companyArray = [] search=driver.find_element_by_id('txtfromdate') 搜索。 send_keys("2019-05-17") search1=driver.find_element_by_id('txttodate') search1.s​​end_keys("2019-05-20") submit_button=driver.find_element_by_id("btn_submit").click() soup = BeautifulSoup( driver.page_source, 'lxml') Companies =soup.find("table",class_="table1") for tag in Companies.findChildren(): if isinstance(tag, Tag) and tag.name in 'a': print (tag.text)
    • 有人可以帮忙吗
    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 2021-02-24
    • 1970-01-01
    相关资源
    最近更新 更多