网页抓取时无法获得特定值

时间:2019-05-22 14:47:26

标签: python python-3.x beautifulsoup

我正在尝试从this site获取欧元,美元和英镑的实际汇率,但我不知道如何获取。

以下是页面来源的屏幕截图:Page source

这是我正在使用的代码:

import requests

import urllib.request

import time

from bs4 import BeautifulSoup


url = "https://www.nbp.pl/home.aspx?f=/kursy/kursya.html"
response = requests.get(url)

soup = BeautifulSoup(response.text, "html.parser")
soup.findAll("tr")

for wartosc in soup.findAll("tr"):
    print(wartosc.get("td"))

2 个答案:

答案 0 :(得分:1)

url = "https://www.nbp.pl/home.aspx?f=/kursy/kursya.html"
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, "lxml")

for itemHtml in soup.select('.pad5 tr'):

    currency = ['amerykański','euro','szterling']
    if itemHtml.find('td'):
        if any (cur in itemHtml.text for cur in currency):
            print(itemHtml.text)

结果: dolaramerykański1美元3,8620

欧元1欧元4,3098

fun szterling 1英镑4,8906

答案 1 :(得分:1)

只需拉表并根据需要操作数据框:

import pandas as pd

url = "https://www.nbp.pl/home.aspx?f=/kursy/kursya.html"
tables = pd.read_html(url)

df = tables[43]
df['Kurs średni'] = df['Kurs średni'] / 10000

*输出:**

print (df.to_string())
                           Nazwa waluty Kod waluty  Kurs średni
0                       bat (Tajlandia)      1 THB       0.1208
1                     dolar amerykański      1 USD       3.8620
2                    dolar australijski      1 AUD       2.6588
3                       dolar Hongkongu      1 HKD       0.4920
4                      dolar kanadyjski      1 CAD       2.8829
5                   dolar nowozelandzki      1 NZD       2.5117
6                     dolar singapurski      1 SGD       2.7999
7                                  euro      1 EUR       4.3098
8                        forint (Węgry)    100 HUF       1.3192
9                     frank szwajcarski      1 CHF       3.8209
10                       funt szterling      1 GBP       4.8906
11                     hrywna (Ukraina)      1 UAH       0.1466
12                        jen (Japonia)    100 JPY       3.4974
13                        korona czeska      1 CZK       0.1672
14                        korona duńska      1 DKK       0.5771
15                     korona islandzka    100 ISK       3.1276
16                      korona norweska      1 NOK       0.4413
17                      korona szwedzka      1 SEK       0.4004
18                     kuna (Chorwacja)      1 HRK       0.5804
19                         lej rumuński      1 RON       0.9051
20                       lew (Bułgaria)      1 BGN       2.2036
21                         lira turecka      1 TRY       0.6335
22                nowy izraelski szekel      1 ILS       1.0686
23                      peso chilijskie    100 CLP       0.5559
24                     peso filipińskie      1 PHP       0.0736
25                    peso meksykańskie      1 MXN       0.2030
26  rand (Republika Południowej Afryki)      1 ZAR       0.2684
27                      real (Brazylia)      1 BRL       0.9562
28                    ringgit (Malezja)      1 MYR       0.9226
29                       rubel rosyjski      1 RUB       0.0600
30                   rupia indonezyjska  10000 IDR       2.6589
31                       rupia indyjska    100 INR       5.5428
32              won południowokoreański    100 KRW       0.3244
33                yuan renminbi (Chiny)      1 CNY       0.5593
34                            SDR (MFW)      1 XDR       5.3180

并过滤数据框

import pandas as pd

url = "https://www.nbp.pl/home.aspx?f=/kursy/kursya.html"
tables = pd.read_html(url)

df = tables[43]
df['Kurs średni'] = df['Kurs średni'] / 10000


currency = ['dolar amerykański','euro','funt szterling']
df_filter = df.loc[df['Nazwa waluty'].isin(currency)]

输出

print (df_filter)
         Nazwa waluty Kod waluty  Kurs średni
1   dolar amerykański      1 USD        3.8620
7                euro      1 EUR        4.3098
10     funt szterling      1 GBP        4.8906
相关问题