从动态网页抓取数据时,从选择对象中选择一个选项

时间:2020-11-10 11:50:04

标签: python html selenium web-scraping

我正在做一些网络爬虫,我想知道如何从下拉框中选择数据并将其抓取。这是页面:https://www.cbn.gov.ng/rates/ExchRateByCurrency.asp

如您所见,这是一个动态网页,可以选择显示多少个条目。

Snippet of web page showing entries dropdown box which allows selection of number of entries to show

我要做的是选择最大值(100),然后从表中抓取数据。有什么想法可以解决吗?这是您可以构建的一些代码:


Firefox = Firefox()
Firefox.get(source["Exchange Rates by Currency"])

sleep(30)

html = Firefox.page_source
html = bs(html,"html.parser")
table = html.find("table",id="exTable")

select_item = html.find("select")

它将带您直接到表并分别选择项目。

1 个答案:

答案 0 :(得分:0)

使用python尝试以下方法- requests 涉及请求时,需要简单,直接,可靠,快速且更少的代码。检查Google chrome浏览器的网络部分后,我已经从网站本身获取了API URL。

下面的脚本到底在做什么:

  1. 首先,它将获取API URL并执行GET请求。

  2. 获取数据脚本后,将使用json.loads库解析JSON数据。

  3. 最后,它将按货币列表对整个汇率列表进行迭代并打印出来,例如:-买入汇率,中央汇率,货币,卖出汇率,汇率日期。

    import json
    import requests
    from urllib3.exceptions import InsecureRequestWarning
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    
    def scrap_cbn_data():
    
    URL = 'https://www.cbn.gov.ng/rates/outputExchangeRateJSN.asp?_=1605068636834' #API URL
    
    response = requests.get(URL,verify=False) # GET request
    json_result = json.loads(response.text) #Parse JSON data using json.loads
    extracted_data = json_result['data'] #extracted data
    
    for item in extracted_data: #iterate over the list of exchange rate by currency
        print('-' * 100)
        print('Buying Rate : ', item['buyingrate'])
        print('Central Rate : ', item['centralrate'])
        print('Currency : ', item['currency'])
        print('Rate Date : ', item['ratedate'])
        print('Selling Rate : ', item['sellingrate'])
        print('-' * 100)
    
    scrap_cbn_data()
    
相关问题