首页 > 解决方案 > 如何使用 BeautifulSoup 抓取带有动态脚本的网页?

问题描述

我正在寻找一种更好的方法来从https://www.remitly.com/us/en/india获取最新汇率

使用下面的当前代码,我得到了 16 个“脚本”实例,然后遍历每个实例并查看它们是否包含汇率是一种方法。有没有更好的办法?

这里的问题是我不能在soup.find_all(). 数组元素也太大。

# get current exchange rate

import bs4 as bs
import urllib.request
import parser
from pprint import pprint

source = urllib.request.urlopen('https://www.remitly.com/us/en/india')
soup = bs.BeautifulSoup(source,'lxml')

#js_test = soup.findAll('td', class_='f1smo2ix')
cost = soup.find_all('script')

print(cost)
print(len(cost))

标签: pythonbeautifulsoup

解决方案


解决方案BeautifulSoup,您可以使用.find_next_sibling(text=True)来获取费率:

import requests
from bs4 import BeautifulSoup

url = 'https://www.remitly.com/us/en/india'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')

print( soup.select_one('sup:contains("₹")').find_next_sibling(text=True) )

印刷:

75.55

推荐阅读