python爬蟲(xpath),獲取某只股票的當前價格和市值


比如,我們需要實現百度某一只股票,查詢出股票的當前價格和市值

我們查詢”600754“這只股票的當前價格和市值

 

 

 

實現步驟如下:

1、導入request庫,還需要額外導入lxml庫(后面使用的到)

import requests   #倒入requests庫
from lxml import etree  #倒入lxml 庫(沒有這個庫,pip install lxml安裝)

2、構造請求數據,百度搜索發起請求的數據比較多

cookies = {
    'BIDUPSID': '90EF3BD78F53BC8C96DF84CD3854CA2D',
    'PSTM': '1578233930',
    'BD_UPN': '12314753',
    'BAIDUID': '885754C8E6BD7B1A771802631815CC6D:FG=1',
    'BDORZ': 'B490B5EBF6F3CD402E515D22BCDA1598',
    'BDUSS': 'mxYdVpwOEx0eGJsT3VUYTJXbkZJYWhKSGpQWnlqaVBwMlExTWNNRkR4cWtabHRlSVFBQUFBJCQAAAAAAAAAAAEAAACRJsY-cGlwacnxu7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKTZM16k2TNeV',
    'COOKIE_SESSION': '7_0_5_3_11_3_0_0_4_2_1_0_73199_0_169_0_1580456363_0_1580456194%7C9%23622712_32_1580376248%7C6',
    'cflag': '13%3A3',
    'BD_HOME': '1',
    'BDRCVFR[feWj1Vr5u3D]': 'I67x6TjHwwYf0',
    'delPer': '0',
    'BD_CK_SAM': '1',
    'PSINO': '3',
    'H_PS_PSSID': '1438_21104_26350',
    'H_PS_645EC': '29b8ZVy4WP7OUTz6%2FjeON9IexqLhOnMXkLTzhD5NfPu4fH%2FPZmThFknleY0LwzNQZ8j8',
    'BDSVRTM': '121',
    'WWW_ST': '1580466352318',
}

headers = {
    'is_xhr': '1',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
    'is_pbs': '600754',
    'Accept': '*/*',
    'Referer': 'https://www.baidu.com/s?wd=600754&rsv_spt=1&rsv_iqid=0xa5a17c8700013159&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&rsv_dl=tb&oq=600754&rsv_t=29b8ZVy4WP7OUTz6%2FjeON9IexqLhOnMXkLTzhD5NfPu4fH%2FPZmThFknleY0LwzNQZ8j8&rsv_pq=b379448d00013935',
    'X-Requested-With': 'XMLHttpRequest',
    'Connection': 'keep-alive',
    'is_referer': 'https://www.baidu.com/s?wd=600754&rsv_spt=1&rsv_iqid=0xa5a17c8700013159&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_n=2&rsv_sug3=1&rsv_sug1=1&rsv_sug7=100&rsv_sug2=0&inputT=359&rsv_sug4=359',
}

params = (
    ('ie', ['utf-8', 'utf-8']),
    ('newi', '1'),
    ('mod', '1'),
    ('isbd', '1'),
    ('isid', 'b379448d00013935'),
    ('wd', '600754'),
    ('rsv_spt', '1'),
    ('rsv_iqid', '0xa5a17c8700013159'),
    ('issp', '1'),
    ('f', '8'),
    ('rsv_bp', '1'),
    ('rsv_idx', '2'),
    ('rqlang', 'cn'),
    ('tn', 'baiduhome_pg'),
    ('rsv_enter', '0'),
    ('rsv_dl', 'tb'),
    ('oq', '600754'),
    ('rsv_t', '29b8ZVy4WP7OUTz6/jeON9IexqLhOnMXkLTzhD5NfPu4fH/PZmThFknleY0LwzNQZ8j8'),
    ('rsv_pq', 'b379448d00013935'),
    ('bs', '600754'),
    ('rsv_sid', '1438_21104_26350'),
    ('_ss', '1'),
    ('clist', ''),
    ('hsug', ''),
    ('f4s', '1'),
    ('csor', '6'),
    ('_cr1', '29647'),
)

3、發起請求,且結果轉化為text(后面分析返回數據需要讀取text內容)

response = requests.get('https://www.baidu.com/s', headers=headers, params=params, cookies=cookies).text

4、分析結果(分析數據用的是Xpath爬蟲)具體使用方法博客有其他文章講解:https://www.cnblogs.com/becks/p/11335493.html

html = etree.HTML(response)
a = html.xpath('//span[@class = "op-stockdynamic-moretab-cur-num c-gap-right-small"]/text()')
print('當前價格:',a[0])#當前價格
b = html.xpath('//ul[@class = "op-stockdynamic-moretab-info"]/li[8]/span[2]/text()')
print('當前市值:',b[0])#當前市值

快速獲取請求頭信息 可以參考這篇:https://www.cnblogs.com/becks/p/12243014.html

 全部代碼

#本腳本實現,指定股票代碼百度查詢出市值和當前股價

import requests   #倒入requests庫
from lxml import etree  #倒入lxml 庫(沒有這個庫,pip install lxml安裝)

cookies = {
    'BIDUPSID': '90EF3BD78F53BC8C96DF84CD3854CA2D',
    'PSTM': '1578233930',
    'BD_UPN': '12314753',
    'BAIDUID': '885754C8E6BD7B1A771802631815CC6D:FG=1',
    'BDORZ': 'B490B5EBF6F3CD402E515D22BCDA1598',
    'BDUSS': 'mxYdVpwOEx0eGJsT3VUYTJXbkZJYWhKSGpQWnlqaVBwMlExTWNNRkR4cWtabHRlSVFBQUFBJCQAAAAAAAAAAAEAAACRJsY-cGlwacnxu7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKTZM16k2TNeV',
    'COOKIE_SESSION': '7_0_5_3_11_3_0_0_4_2_1_0_73199_0_169_0_1580456363_0_1580456194%7C9%23622712_32_1580376248%7C6',
    'cflag': '13%3A3',
    'BD_HOME': '1',
    'BDRCVFR[feWj1Vr5u3D]': 'I67x6TjHwwYf0',
    'delPer': '0',
    'BD_CK_SAM': '1',
    'PSINO': '3',
    'H_PS_PSSID': '1438_21104_26350',
    'H_PS_645EC': '29b8ZVy4WP7OUTz6%2FjeON9IexqLhOnMXkLTzhD5NfPu4fH%2FPZmThFknleY0LwzNQZ8j8',
    'BDSVRTM': '121',
    'WWW_ST': '1580466352318',
}

headers = {
    'is_xhr': '1',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
    'is_pbs': '600754',
    'Accept': '*/*',
    'Referer': 'https://www.baidu.com/s?wd=600754&rsv_spt=1&rsv_iqid=0xa5a17c8700013159&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&rsv_dl=tb&oq=600754&rsv_t=29b8ZVy4WP7OUTz6%2FjeON9IexqLhOnMXkLTzhD5NfPu4fH%2FPZmThFknleY0LwzNQZ8j8&rsv_pq=b379448d00013935',
    'X-Requested-With': 'XMLHttpRequest',
    'Connection': 'keep-alive',
    'is_referer': 'https://www.baidu.com/s?wd=600754&rsv_spt=1&rsv_iqid=0xa5a17c8700013159&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_n=2&rsv_sug3=1&rsv_sug1=1&rsv_sug7=100&rsv_sug2=0&inputT=359&rsv_sug4=359',
}

params = (
    ('ie', ['utf-8', 'utf-8']),
    ('newi', '1'),
    ('mod', '1'),
    ('isbd', '1'),
    ('isid', 'b379448d00013935'),
    ('wd', '600754'),
    ('rsv_spt', '1'),
    ('rsv_iqid', '0xa5a17c8700013159'),
    ('issp', '1'),
    ('f', '8'),
    ('rsv_bp', '1'),
    ('rsv_idx', '2'),
    ('rqlang', 'cn'),
    ('tn', 'baiduhome_pg'),
    ('rsv_enter', '0'),
    ('rsv_dl', 'tb'),
    ('oq', '600754'),
    ('rsv_t', '29b8ZVy4WP7OUTz6/jeON9IexqLhOnMXkLTzhD5NfPu4fH/PZmThFknleY0LwzNQZ8j8'),
    ('rsv_pq', 'b379448d00013935'),
    ('bs', '600754'),
    ('rsv_sid', '1438_21104_26350'),
    ('_ss', '1'),
    ('clist', ''),
    ('hsug', ''),
    ('f4s', '1'),
    ('csor', '6'),
    ('_cr1', '29647'),
)

response = requests.get('https://www.baidu.com/s', headers=headers, params=params, cookies=cookies).text
html = etree.HTML(response)
a = html.xpath('//span[@class = "op-stockdynamic-moretab-cur-num c-gap-right-small"]/text()')
print('當前價格:',a[0])#當前價格
b = html.xpath('//ul[@class = "op-stockdynamic-moretab-info"]/li[8]/span[2]/text()')
print('當前市值:',b[0])#當前市值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM