原创 +1银贝 保活获取同花顺问财查询数据(适用于任何查询字段)

sushi 2023-8-16 670

同花顺问财具有很强大的条件选股查询功能,我们输入想要查询的字段就可以获取对应的数据输出结果,功能十分强大。虽说它提供了导数据的功能,但如果是要获取某个时间段的数据,还是差强人意。 如果我们可以用爬虫来获取所有条件选股的问询数据,那么就方便很多了,然而,同花顺的反扒是财经网站中做的最好的几家之一,数据爬取起来有一点的难度。如果要解决反扒问题,首先要满足网站的反扒校验,这里我们用的是henxin-v.js来满足网站的反扒校验。代码如下:

# 直接生成hexin-v来满足网站的反扒校验。
def getToken():
    path = os.getcwd()
    with open(path + r'/spider_code/股票代码/23.问财v2/hexin-v.js', 'r') as f:
        jscontent = f.read()
        context = execjs.compile(jscontent)
    return context.call("v")

原本满足网站的反扒校验,便可通过wencai函数获取选股条件查询数据,但是在实际操作过程中发现还是行不通,因为request请求时,网站的cookies是变动,今天可用的cookies过两天就没法使用。于是我们边将cookies存储在config,ini文件中,以便验证替换。

for i in range(5):
        try:
            response = rq.request(
                method='POST',
                url=url,
                data=param,
                headers=headers,
                timeout=10,
                cookies=cookies
            )
            # encoded_param = urllib.parse.urlencode(param)
            # full_url = url + "?" + encoded_param
            # print(full_url)
            print(response.status_code)
            # 指定请求编码为当前编码
            response.encoding = response.apparent_encoding
            # 接受数据text--文本
            stock_message = response.text
            # 将已编码的 JSON 字符串解码为 Python 对象
            result = json.loads(stock_message)
            break
        except Exception as e:
            print(e)
            time.sleep(3)

解决问题的焦点就变为要想获取问财的条件选股问询数据,就必须确保问财网页的cookies是可用,于是乎,代码里面添加了判断,如果没法获取数据,就要更新cookies,至于怎么更新呢,手动来获取肯定不合理,这里我们使用了selenium库,模拟登录获取最新的cookies,将原来的cookies进行替换。

# 登录
def get_driver():
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gnu')
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('window-size=1920,1080')
    rq_url = "http://www.iwencai.com/unifiedwap/home/index"
    # rq_url = 
    driver =

本主题为课程学员专享,成为股票量化投资课程学员后可免费阅读

成为学员

上传的附件:

最新回复 ( 0条评论 )


官方微信
码力十足学量化
Powered by Xiuno BBS 4.0.7

官方微信