我是新来的网络刮取,一直在使用BeautifulSoup来获取每日抵押贷款利率。然而,很多我试图搜集的服务网站返回“无”或一个空列表。我试图抓取的标签肯定存在,我只是不明白为什么会这样。下面是一个例子。在
html=urlopen('https://www.popular.com/en/mortgages/')
bs0bj=BeautifulSoup(html, 'html.parser');
rate=bs0bj.find('span', {'class':'text-md text-popular-medium-blue'}).div
print(rate)
要获得所需的数据,可以将selenium与python结合使用,如下所示:
结果:
^{pr2}$如果您检查页面源代码(例如通过Chrome或Firefox中的
view-source:
,或者通过将html
字符串写入一个文件),您将看到您要查找的元素不在那里。实际上,费率是动态加载的:您可以按照脚本URL进行操作,您将看到响应如下所示:
^{pr2}$此响应可能足够规则,可以在其上使用regex。在
正如rubik所说,速率是使用JS动态加载的。幸运的是,内容的结构相对简单,下面是我的分析方法:
在Chrome(或其他浏览器)中打开一个新选项卡,右键单击,然后选择
view-source
。切换到Network
选项卡并选中preserve log
选项。在现在,打开网站
https://www.popular.com/en/mortgages/
。加载的内容可以在左侧面板看到。在检查每个项目并分析其
Preview
内容,直到找到要废弃的内容。这是我发现的,2.75%
与网站上显示的抵押贷款利率值相匹配。在现在,切换到
Headers
选项卡并检查Request URL
,这是发送到服务器的最后一个请求。在下一步是分析请求URL
https://apps.popular.com/navs/rates_wm_modx.php?id_rates=1&textcolor=3784D2&backgroundcolor=ffffff&t=1
我猜}表示css信息,所以我删除了它们,发现url仍然有效。在
textcolor
和{现在我们有了一个更简单的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
表示{完成这些操作后,现在可以直接从请求URL中删除内容:
相关问题 更多 >
编程相关推荐