python - Python 中的网页抓取 - 从网站中提取值
问题描述
我正在尝试从该网站中提取两个值:
一个值是右边的美元汇率,左边是百分比的下降/上升。
问题是,在我得到美元汇率值之后,由于某种原因,这个数字被四舍五入了。(您可以在终端中看到)。我想得到网站上显示的确切数字。
是否有一些友好的 Python 网页抓取文档?
PS:在VS中运行代码时如何摆脱弹出的Python终端窗口?我只希望输出将在 VS 中 - 在交互式窗口中。
my_url = "https://www.bizportal.co.il/forex/quote/generalview/22212222"
uClient = urlopen(my_url)
page_html = uClient.read()
uClient.close()
page_soup = BeautifulSoup(page_html, "html.parser")
div_class = page_soup.findAll("div",{"class":"data-row"})
print (div_class)
#print(div_class[0].text)
#print(div_class[1].text)
解决方案
The data is loaded dynamically via Ajax, but you can simulate this request with requests
module:
import json
import requests
url = 'https://www.bizportal.co.il/forex/quote/generalview/22212222'
ajax_url = "https://www.bizportal.co.il/forex/quote/AjaxRequests/DailyDeals_Ajax?paperId={paperId}&take=20&skip=0&page=1&pageSize=20"
paper_id = url.rsplit('/')[-1]
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0'}
data = requests.get(ajax_url.format(paperId=paper_id), headers=headers).json()
# uncomment this to print all data:
#print(json.dumps(data, indent=4))
# print first one
print(data['Data'][0]['rate'], data['Data'][0]['PrecentageRateChange'])
Prints:
3.4823 -0.76%
推荐阅读
- thinking-sphinx - 出现错误:sharetribe 安装上的未知键名“docinfo”
- javascript - Serverless - 获取创建的云端资源 URL 并将其用作环境变量
- flutter - Flutter CupertinoPicker 不适合屏幕
- python-3.x - 如何在 Minidom 中为特定节点使用 getElementsByTagName
- javascript - 如何创建在其字段名称中包含运行索引的表单数据?
- c - OpenMP 输出不正确的答案
- php - 为了使感谢页面有效
- css - 输入溢出不可见
- amazon-web-services - 如何在 gitlab CI/CD 管道中启动新的 EC2 实例
- octobercms - 十月 CMS 未安装