使用beautifulsoup在moneycontrol网站上的搜索框中填写股票输入

问题描述 投票:2回答:1

我想从stock获取Moneycontrol site信息。我想填写searchbox的股票名称。 HTML代码:

<input class="txtsrchbox FL" id="search_str" 
      onkeyup="getAutosuggesionHeader('#form_topsearch');" 
      onclick="getAutosuggesionHeader('#form_topsearch');" 
      placeholder="Search Quotes, News, NAVs" name="search_str" 
      value="" type="text" autocomplete="off">

我怎样才能使用beautifulsoup实现这一目标。

我试过以下代码:

from BeautifulSoup import BeautifulSoup

import urllib

post_params = {'value' : 'SBIN' }

post_args = urllib.parse.urlencode(post_params).encode("utf-8")

url = 'https://www.moneycontrol.com'

fp = urllib.request.urlopen(url, post_args)

soup = BeautifulSoup(fp)
python beautifulsoup
1个回答
1
投票

我不熟悉财务信息所以这可能没有用,但也许是,或者QHarr可以解决它。看起来它给了一些价值(t:时间?,cp:收盘价?v:成交量?ap:???)

所以我注意到你可以从图表数据中获得一些响应,但它需要输入一个参数来查询(即sc_id值,在本例中是SBIN,是SBI。)

因此我需要一种方法来获取sc_id值,并看到它们有一个“建议”文本搜索返回,可以访问该输入以输入您的搜索词(即:“sbin”),以获取该sc_id。

所以这里有一个小脚本能够为SBIN获取一些信息。希望这可以从中得到一些用处:

import requests
import json

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'}


# Enter search text
query_input = input('Enter Search Text: ')

#Get suggested sc_id
suggest_query_url = 'https://www.moneycontrol.com/mccode/common/autosuggestion_solr.php'

query = {
'classic': 'true',
'query': query_input,
'type': '1',
'format': 'json',
'callback': 'suggest1'}


# Pull out the sc_id
suggested_response = requests.get(suggest_query_url , headers=headers, params=query).text
suggested_response = suggested_response.split('(',1)[1]
suggested_response = suggested_response.rsplit(')',1)[0]

sc_id = json.loads(suggested_response)[0]['sc_id']


# Use the sc_id to get BSE and NSE data
request_url = 'https://www.moneycontrol.com/stocks/company_info/get_vwap_chart_data.php'
query = {'sc_did': sc_id}

response = requests.get(request_url, headers=headers, params=query).json()

输出:

print (response)
{'BSE': [{'t': '1551949665', 'ap': '279.70', 'cp': '279.70', 'v': '2151'}, {'t': '1551949704', 'ap': '279.70', 'cp': '279.70', 'v': '2151'}, {'t': '1551949740', 'ap': '279.70', 'cp': '279.70', 'v': '2151'}, {'t': '1551950159', 'ap': '278.93', 'cp': '278.90', 'v': '18755'}, {'t': '1551950219', 'ap': '278.90', 'cp': '278.70', 'v': '23368'}, {'t': '1551950279', 'ap': '278.89', 'cp': '279.00', 'v': '32498'}, {'t': '1551950338', 'ap': '278.91', 'cp': '279.00', 'v': '36396'}, {'t': '1551950399', 'ap': '278.90', 'cp': '278.80', 'v': '42964'}, {'t': '1551950459', 'ap': '278.88', 'cp': '278.35', 'v': '45685'}, {'t': '1551950519', 'ap': '278.76', 'cp': '278.30', 'v': '54082'}, {'t': '1551950579', 'ap': '278.74', 'cp': '278.30', 'v': '56780'}, {'t': '1551950639', 'ap': '278.69', 'cp': '278.20', 'v': '62504'}, {'t': '1551950699', 'ap': '278.68', 'cp': '278.10', 'v': '63338'}, {'t': '1551950759', 'ap': '278.68', 'cp': '278.10', 'v': '63723'}, {'t': '1551950819', 'ap': '278.67', 'cp': '277.80', 'v': '64998'}, {'t': '1551950879', 'ap': '278.63', 'cp': '278.20', 'v': '68780'}, {'t': '1551950939', 'ap': '278.59', 'cp': '278.60', 'v': '77680'}, {'t': '1551950999', 'ap': '278.59', 'cp': '278.35', 'v': '79316'}, {'t': '1551951059', 'ap': '278.58', 'cp': '278.30', 'v': '80566'}, {'t': '1551951119', 'ap': '278.58', 'cp': '278.20', 'v': '81247'}, {'t': '1551951178', 'ap': '278.57', 'cp': '278.10', 'v': '82067'}, {'t': '1551951238', 'ap': '278.57', 'cp': '278.15', 'v': '82918'}, {'t': '1551951294', 'ap': '278.56', 'cp': '278.60', 'v': '85734'}, {'t': '1551951358', 'ap': '278.56', 'cp': '278.40', 'v': '87239'}, {'t': '1551951419', 'ap': '278.56', 'cp': '278.25', 'v': '88039'}, ...
© www.soinside.com 2019 - 2024. All rights reserved.