一、下载安装fidder
百度搜索fidder直接下载,按提示安装即可。
二、配置fidder
1. 打开fidder,选择tools——options。
2. 选择HTTPS选项卡,勾选前三项,然后点击右侧【actions】,选择【trust root certificate】,安装许可证书。
3. 选择connections选项卡,勾选【allow remote...】,并将代理端口设为8888,
4. 点击确定,重启fidder。
三、配置手机。
1. 打开手机【wlan】选项,将其中的【代理】选项设为【手动】,其中主机名设为电脑的ip,端口设为fidder刚才设的【8888】。其他的wifi密码正常设。
2. 在手机浏览器中,输入电脑ip+端口。比如:192.168.1.107:8888。拉到页面底部,点击【fidderroot certificate 】下载安全证书。下载完后点击下载的文件进行安装。
3. 打开同花顺app,行情——龙虎榜。此时在fidder可以看到同花顺和服务器的通信包。选择fidder右侧的inspector——raw,复制其中get对应的url。
4. 在浏览器中输入url,点击F12打开浏览器的代码,可得到龙虎榜数据。通过改变url中的日期,可获得其他日期的数据。
三、用python抓取解析数据。
1. 读取网页html表格数据。
import requests
import json
import simplejson
import xmltodict
# header需要根据实际情况自己调整。
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Cookie': 'v=Axee6EvROJqMkLwWYjreUUQHr4BkXOu-xTBvMmlEM-ZNmDn-cSx7DtUA_4N6',
'Host': 'data.hexin.cn',
'Referer': 'https://data.hexin.cn/interface/lhStocks/cate/yxyz/field/jmre/sort/desc/ajax/1/date/2023-02-17/%20HHTTP/1.1',
'sec-ch-ua': '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
}
url = 'https://data.hexin.cn/interface/lhStocks/cate/yxyz/field/jmre/sort/desc/ajax/1/date/2023-02-17/%20HHTTP/1.1'
r = requests.get(url, headers=headers)
print(r.status_code)
运行结果如下:
2. 用beautifulsoup解析html数据。
from bs4 import BeautifulSoup
soup= BeautifulSoup(r.text,"html.parser")
print(soup)
运行结果如下:
3. 提起html中的文本内容。
a = soup.text.split()
print(a)
运行结果如下:
4. 将数据整理到字典并保存。
from collections import defaultdict
stock_dict = defaultdict()
stock_dict['名称'] = a[4::5]
stock_dict['代码'] = a[5::5]
stock_dict['收盘价'] = a[6::5]
stock_dict['净买入'] = a[7::5]
stock_dict['涨跌幅'] = a[8::5]
import pandas as pd
res = pd.DataFrame(stock_dict)
print(res)
res.to_csv('test.csv')
运行结果如下: