我正在做一些网络爬虫,我想知道如何从下拉框中选择数据并将其抓取。这是页面:https://www.cbn.gov.ng/rates/ExchRateByCurrency.asp
如您所见,这是一个动态网页,可以选择显示多少个条目。
我要做的是选择最大值(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")
它将带您直接到表并分别选择项目。
答案 0 :(得分:0)
使用python尝试以下方法- requests 涉及请求时,需要简单,直接,可靠,快速且更少的代码。检查Google chrome浏览器的网络部分后,我已经从网站本身获取了API URL。
下面的脚本到底在做什么:
首先,它将获取API URL并执行GET请求。
获取数据脚本后,将使用json.loads库解析JSON数据。
最后,它将按货币列表对整个汇率列表进行迭代并打印出来,例如:-买入汇率,中央汇率,货币,卖出汇率,汇率日期。
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()