正如 rubik 所说,费率是使用 JS 动态加载的。好在内容的结构比较简单,我是这样分析的:
在 Chrome(或其他浏览器)中打开一个新标签页并右键单击,然后选择 view-source。切换到Network 选项卡并检查preserve log 选项。
现在,打开网站https://www.popular.com/en/mortgages/。加载的内容可以在左侧面板中看到。
检查每个项目并分析其Preview 内容,直到找到要废弃的项目。这是我发现的,2.75% 与网站上显示的抵押贷款利率值匹配。
现在,切换到Headers 选项卡并检查Request URL,这是发送到服务器的最终请求。
接下来就是分析Request URL https://apps.popular.com/navs/rates_wm_modx.php?id_rates=1&textcolor=3784D2&backgroundcolor=ffffff&t=1
我猜textcolor和backgroundcolor表示css信息,所以删除了,发现url还是有效的。
现在我们有了一个更简单的网址:https://apps.popular.com/navs/rates_wm_modx.php?id_rates=1&t=1
很明显,id_rates 表示抵押贷款利率的顺序,没有任何分析。问题是:t 是什么意思?
这可以通过分析其他预览内容找到规则来解决。这里我想跳过这个过程,直接给出结论。
t=1表示Annual interest,t=2表示APR,t=6表示P&I Payment等:
完成这些之后,现在您可以直接从请求 URL 中抓取内容:
from urllib2 import urlopen
import re
file=urlopen('https://apps.popular.com/navs/rates_wm_modx.php?id_rates=1&t=1')
annual_interest = re.findall(r"\d+\.\d+", str(file.read()))[0]
#the annual interest is 2.75