首页 > 解决方案 > Python 中的网页抓取 - 从网站中提取值

问题描述

我正在尝试从该网站中提取两个值:

bizportal.co.il

一个值是右边的美元汇率,左边是百分比的下降/上升。

问题是,在我得到美元汇率值之后,由于某种原因,这个数字被四舍五入了。(您可以在终端中看到)。我想得到网站上显示的确切数字。

是否有一些友好的 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)

美元汇率

标签: pythonbeautifulsoupurllib

解决方案


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%

推荐阅读