Open libeiheng opened 1 year ago
1.使用现象: 使用时如果遇到概念分类抓取不完整,以及某类概念成员股抓取不完整,可能是因为多页数据,只抓取了一页引起的.行业分类也有此类情况.
2.分析说明: 以industry.py中ths_concept_member为例.该方法主要是抓取同花顺概念股成员.比如'证金持股'有200多支股票,'熊去胆氧酸'有20多支股票.但原文只能抓取首页信息.不能翻页抓取其他页信息.
3.尝试改进: 将URL中的{page}放到for循环内,实现翻页功能.代码更新如下.其中#部分是原文,
def ths_concept_member(code= "阿里巴巴概念"): """ 同花顺-板块-概念板块-成份股 http://q.10jqka.com.cn/gn/detail/code/301558/ code: 板块名称或代码 """ if code.isdigit(): symbol=code else: symbol=ths_concept_code()[code] page=1
#res = requests.get(url, headers=ths_header()) #soup = BeautifulSoup(res.text, "lxml") try: page_num = int( soup.find_all("a", attrs={"class": "changePage"})[-1]["page"] ) except: page_num = 1 df = pd.DataFrame() # for page in tqdm(range(1, page_num + 1), leave=False): # r = requests.get(url, headers=ths_header()) # temp_df = pd.read_html(r.text)[0] # df = pd.concat([df, temp_df], ignore_index=True) for page in tqdm(range(1, page_num + 1), leave=False): url = f"http://q.10jqka.com.cn/gn/detail/field/264648/order/desc/page/{page}/ajax/1/code/{symbol}" res = requests.get(url, headers=ths_header()) soup = BeautifulSoup(res.text, "lxml") r = requests.get(url, headers=ths_header()) temp_df = pd.read_html(r.text)[0] df = pd.concat([df, temp_df], ignore_index=True) df.rename({"涨跌幅(%)": "涨跌幅","涨速(%)": "涨速", "换手(%)": "换手","振幅(%)": "振幅",'成交额':'成交额(亿)', '流通股':'流通股(亿)','流通市值':'流通市值(亿)', },inplace=True,axis=1,) del df["加自选"] del df['序号'] del df['涨跌'] df["代码"] = df["代码"].astype(str).str.zfill(6) df[['成交额(亿)','流通股(亿)','流通市值(亿)']]=df[['成交额(亿)','流通股(亿)', '流通市值(亿)']].apply(lambda s:s.str.strip('亿')) ignore_cols = ['代码', '名称'] df = trans_num(df, ignore_cols) return df.drop_duplicates()
4.感谢作者,感谢团队.感谢大家指正.谢谢.
url = f"http://q.10jqka.com.cn/gn/detail/field/264648/order/desc/page/{page}/ajax/1/code/{symbol}"。
这个url,除了code和symbol可以中循环中填入,url中其他部分是从哪儿得到的?毕竟翻页的时候浏览器中的url始终是http://q.10jqka.com.cn/gn/detail/code/301558/
1.使用现象: 使用时如果遇到概念分类抓取不完整,以及某类概念成员股抓取不完整,可能是因为多页数据,只抓取了一页引起的.行业分类也有此类情况.
2.分析说明: 以industry.py中ths_concept_member为例.该方法主要是抓取同花顺概念股成员.比如'证金持股'有200多支股票,'熊去胆氧酸'有20多支股票.但原文只能抓取首页信息.不能翻页抓取其他页信息.
3.尝试改进: 将URL中的{page}放到for循环内,实现翻页功能.代码更新如下.其中#部分是原文,
def ths_concept_member(code= "阿里巴巴概念"): """ 同花顺-板块-概念板块-成份股 http://q.10jqka.com.cn/gn/detail/code/301558/ code: 板块名称或代码 """ if code.isdigit(): symbol=code else: symbol=ths_concept_code()[code] page=1
url = f"http://q.10jqka.com.cn/gn/detail/field/264648/order/desc/page/{page}/ajax/1/code/{symbol}"
4.感谢作者,感谢团队.感谢大家指正.谢谢.