Я посмотрел вокруг в том, что происходит, когда эта страница загружает информацию, и я был в состоянии смоделировать на JavaScript делает в python.
я узнал, что он ссылается на страницу с именем IndexMovers.aspx?ln=en
check it out here
Похоже, эта страница является разделенный запятыми список вещей. Сначала приходит имя, далее идет цена, а затем пара других вещей, которые вам не нужны.
Чтобы имитировать это в python, мы запрашиваем страницу, разделяем ее запятыми, затем читаем каждое шестое значение в списке, добавляя это значение и значение после этого в новый список под названием stockInformation.
Теперь мы можем просто перебрать биржевой информации и получить имя, используя item[0]
и цену с item[1]
import requests
newUrl = "http://www.bseindia.com/Msource/IndexMovers.aspx?ln=en"
response = requests.get(newUrl).text
commaItems = response.split(",")
#create list of stocks, each one containing information
#index 0 is the name, index 1 is the price
#the last item is not included because for some reason it has no price info on indexMovers page
stockInformation = []
for i, item in enumerate(commaItems[:-1]):
if i % 6 == 0:
newList = [item, commaItems[i+1]]
stockInformation.append(newList)
#print each item and its price from your list
for item in stockInformation:
print(item[0], "has a price of", item[1])
Это печатает:
S&P BSE SENSEX has a price of 25489.57
SENSEX#S&P BSE 100 has a price of 7944.50
BSE-100#S&P BSE 200 has a price of 3315.87
BSE-200#S&P BSE MidCap has a price of 11156.07
MIDCAP#S&P BSE SmallCap has a price of 11113.30
SMLCAP#S&P BSE 500 has a price of 10399.54
BSE-500#S&P BSE GREENEX has a price of 2234.30
GREENX#S&P BSE CARBONEX has a price of 1283.85
CARBON#S&P BSE India Infrastructure Index has a price of 152.35
INFRA#S&P BSE CPSE has a price of 1190.25
CPSE#S&P BSE IPO has a price of 3038.32
#and many more... (total of 40 items)
которая, очевидно, equivlent к значениям, указанным на страница
Итак, у вас есть это, вы можете имитировать точно, что t javascript на этой странице делает для загрузки информации. Infact у вас теперь есть еще больше информации, чем просто было показано вам на странице, и запрос будет быстрее, потому что мы загружаем только данные, а не весь этот посторонний html.
Мне кажется, что число, которое вы ищете, не подается статически (это не строка исходного HTML). – roadrunner66
Спасибо за ответ. Любой способ, которым эта задача может быть выполнена? – RakeshKirola
Да, это может быть полностью выполнено, я отправлю ответ в секунду, показывая вам, как делать то, что делает javascript на этой странице. – Keatinge