无法使用BeautifulSoup从网页获取更新的数据

2024-09-23 22:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

import requests 
URL = 'https://www.moneycontrol.com/india/stockpricequote/cigarettes/itc/ITC'
response = requests.get(URL)  
soup = BeautifulSoup(response.text,'html.parser')
#     time.sleep(5)
var1 = float(soup.find('td', attrs={'class': 'espopn'}).get_text().replace(",",""))

有了这段代码,我可以计算var1的值,但是我访问的网页在我们登陆网页后没有显示实时数据,一旦我们登陆网页,需要1秒来更新实时值

因此,我在var1中得到的值不是实时值。 想知道我如何在登陆网页后等待,然后再进行网页抓取。 提前谢谢


Tags: texthttpsimportcomurl网页getresponse
1条回答
网友
1楼 · 发布于 2024-09-23 22:30:35

1.由于数据正在更新,所以很难从bs4获取动态数据,所以您可以尝试从api本身获取动态数据,以便如何找到它

2.进入chrome开发者模式,然后“网络”选项卡“查找xhr”,现在在“名称”选项卡下重新加载你的网站,你会找到链接,但有很多链接

3.但在左边有搜索,所以你们可以搜索价格,从中得到url,你们点击那个去页眉,复制那个url,然后用requests模块打电话

import requests
from bs4 import BeautifulSoup

res=requests.get("https://api.moneycontrol.com/mcapi/v1/stock/get-stock-price?scIdList=ITC%2CVST%2CGPI%2CIWP540954%2CGTC&scId=ITC")
main_data=res.json()
main_data['data'][0]

输出:

{'companyName': 'ITC',
 'lastPrice': '215.25',
 'perChange': '-0.62',
 'marketCap': '264947.87',
 'scTtm': '19.99',
 'perform1yr': '7.33',
 'priceBook': '4.16'}

图片: enter image description here

相关问题 更多 >