同花顺问财具有很强大的条件选股查询功能,我们输入想要查询的字段就可以获取对应的数据输出结果,功能十分强大。虽说它提供了导数据的功能,但如果是要获取某个时间段的数据,还是差强人意。
如果我们可以用爬虫来获取所有条件选股的问询数据,那么就方便很多了,然而,同花顺的反扒是财经网站中做的最好的几家之一,数据爬取起来有一点的难度。如果要解决反扒问题,首先要满足网站的反扒校验,这里我们用的是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 =
本主题为课程学员专享,成为股票量化投资课程学员后可免费阅读
成为学员