python - 如何使用 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))
解决方案
解决方案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
推荐阅读
- angular - 如何避免 Observable 中超出最大调用堆栈大小?
- javascript - 搜索功能(JAVASCRIPT)
- ios - 请从此设备中删除使用您的免费帐户签名的应用程序以保持在限制范围内
- javascript - vue js全局变量出错但工作
- html - 使网页在中小屏幕上响应
- python - 如何在odoo中为继承费用模块制作课程,请帮助我
- python - Python XGBoost GPU 错误:检查失败:gpu_predictor_
- c++ - CMake 项目依赖于另一个 CMake 项目未解析的符号
- node.js - Sequelize 不加入关系
- flutter - Flutter:在选项卡上添加边框顶部