Я учусь соскабливать. Мне нужно получить доступ к строке json, с которой я сталкиваюсь в DIV. Я использую beautifulsoup. Это строка json, которую я получаю в DIV. Мне нужно значение (51,65) тега lastprice. Пожалуйста помоги. Объект JSON находится в json_d

import pip
import requests
import json 
from bs4 import BeautifulSoup

print ('hi')

page = requests.get('https://www.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=NBCC&illiquid=0&smeFlag=0&itpFlag=0')

soup = BeautifulSoup(page.text, 'html.parser')

json_d = soup.find(id='responseDiv')

print ('bye')
-2
user2381346 8 Дек 2018 в 14:17

1 ответ

Лучший ответ
import bs4
import json

r= '''
<div id="responseDiv" style="display:none">{"tradedDate":"07DEC2018","data":[{"pricebandupper":"58.35","symbol":"NBCC","applicableMargin":"15.35","bcEndDate":"14-SEP-18","totalSellQuantity":"40,722","adhocMargin":"-","companyName":"NBCC (India) Limited","marketType":"N","exDate":"06-SEP-18","bcStartDate":"10-SEP-18","css_status_desc":"Listed","dayHigh":"53.55","basePrice":"53.05","securityVar":"10.35","pricebandlower":"47.75","sellQuantity5":"-","sellQuantity4":"-","sellQuantity3":"-","cm_adj_high_dt":"08-DEC-17","sellQuantity2":"-","dayLow":"51.55","sellQuantity1":"40,722","quantityTraded":"71,35,742","pChange":"-2.64","totalTradedValue":"3,714.15","deliveryToTradedQuantity":"40.23","totalBuyQuantity":"-","averagePrice":"52.05","indexVar":"-","cm_ffm":"2,424.24","purpose":"ANNUAL GENERAL MEETING\/DIVIDEND RE 0.56 PER SHARE","buyPrice2":"-","secDate":"7DEC2018","buyPrice1":"-","high52":"266.00","previousClose":"53.05","ndEndDate":"-","low52":"50.80","buyPrice4":"-","buyPrice3":"-","recordDate":"-","deliveryQuantity":"28,70,753","buyPrice5":"-","priceBand":"No Band","extremeLossMargin":"5.00","cm_adj_low_dt":"26-OCT-18","varMargin":"10.35","sellPrice1":"51.80","sellPrice2":"-","totalTradedVolume":"71,35,742","sellPrice3":"-","sellPrice4":"-","sellPrice5":"-","change":"-1.40","surv_indicator":"-","ndStartDate":"-","buyQuantity4":"-","isExDateFlag":false,"buyQuantity3":"-","buyQuantity2":"-","buyQuantity1":"-","series":"EQ","faceValue":"1.00","buyQuantity5":"-","closePrice":"51.80","open":"53.15","isinCode":"INE095N01031","lastPrice":"51.65"}],"optLink":"\/marketinfo\/sym_map\/symbolMapping.jsp?symbol=NBCC&amp;instrument=-&amp;date=-&amp;segmentLink=17&amp;symbolCount=2","otherSeries":["EQ"],"futLink":"\/live_market\/dynaContent\/live_watch\/get_quote\/GetQuoteFO.jsp?underlying=NBCC&amp;instrument=FUTSTK&amp;expiry=27DEC2018&amp;type=-&amp;strike=-","lastUpdateTime":"07-DEC-2018 15:59:59"}</div>'''

html = bs4.BeautifulSoup(r)
soup = html.find('div', {'id':'responseDiv'}).text

data = json.loads(soup)

last_price = data['data'][0]['lastPrice']

РЕДАКТИРОВАТЬ:

json_d = soup.find(id='responseDiv')

Попробуйте перейти на

json_d = soup.find(‘div’, {‘id’:'responseDiv'})

Тогда вы должны быть в состоянии сделать

data = json.loads(json_d)

last_price = data['data'][0]['lastPrice']

Посмотрим, поможет ли это. В настоящее время меня нет за компьютером до вторника, поэтому я набираю это на своем iPhone, поэтому я не могу тестировать / играть с ним.

Другое дело, что сайт, возможно, потребуется прочитать после его загрузки. В этом случае, я думаю, вам нужно будет изучить пакеты selenium или html-requests.

Опять же, я не могу смотреть до вторника, когда вернусь домой за ноутбуком.

0
chitown88 9 Дек 2018 в 15:31