我想从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)
我不熟悉财务信息所以这可能没有用,但也许是,或者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'}, ...