爬虫笔记
爬虫笔记——东方财富科创板数据爬取(requests方法)
网页观察
网页源代码分析
具体代码
上篇文章:爬虫笔记——东方财富科创板数据爬取(selenium方法)介绍了selenium爬取东方财富科创板数据的方法,这里介绍requests的爬取方法。
requests方法:
优点:速度快
缺点:需要在检查f12或者网页源代码中寻找数据源链接
===================================================
网页观察
在f12检查中,未能发现数据加载来源,于是转到网页源代码中发现了下面的网址:东方财富科创板数据网页源代码页面
======================================================
网页源代码分析
打开后为如下页面:
网址:数据来源函数定义页面
======================================================
可以发现函数定义形式和显示页面中的相同,且有数据来源的网址,则可以通过这个网址:数据来源网址来爬取数据,注意在函数定义页面并未定义参数,这里定义了page为1(第一页),每页pagesize为149(每页显示149条数据,因为这里一共只有149条,数据多了可以多定义几页)。
===========================================================
那么得到该网址后就可以通过re准则获取想要的数据了,下面为具体的代码:
具体代码
# 东方财富科创板数据爬取(requests方法)import requestsimport reimport pandas as pd HEADERS = {"User-Agent":"Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"}def main(): url = "http://dcfm.eastmoney.com/em_mutisvcexpandinterface/api/js/get?type=KCB_YSB&token=70f12f2f4f091e459a279469fe49eca5&st={sortType}&sr={sortRule}&p=1&ps=149&js=var%20{jsname}={pages:(tp),data:(x),font:(font)}{param}" response = requests.get(url)text = response.text# re准则查找数据company_name = re.findall('"issue_name":"(.*?)"',text)code = re.findall('"issue_code":"(.*?)"',text)detail_url = list(map(lambda x: "http://data.eastmoney.com/kcb/detail/" + str(x) + ".html",code))state = re.findall('"latest_check_status":"(.*?)"',text)reg_address = re.findall('"reg_address":"(.*?)"',text)industry = re.findall('"csrc_industry":"(.*?)"',text)sponsor_org = re.findall('"sponsor_org":"(.*?)"',text)law_firm = re.findall('"law_firm":"(.*?)"',text)account_firm = re.findall('"account_firm":"(.*?)"',text)update_date = re.findall('"update_date":"([\d-]{10})',text)accept_date = re.findall('"accept_date":"([\d-]{10})',text)ssname = re.findall('"ssname":"(.*?)"',text)# 数据合并kcb_data = pd.DataFrame()kcb_data["公司名称"] = company_name kcb_data["公司简称"] = ssname kcb_data["公司详情网址"] = detail_url kcb_data["审核状态"] = state kcb_data["注册地"] = reg_address kcb_data["行业"] = industry kcb_data["保荐机构"] = sponsor_org kcb_data["律师事务所"] = law_firm kcb_data["会计师事务所"] = account_firm kcb_data["更新日期"] = update_date kcb_data["受理日期"] = accept_date # 数据保存kcb_data.to_excel('./data/kcb_data_spider_requests.xlsx',encoding='utf-8-sig',index=False)print("爬取完成!")main()
可以看到用requests方法是直接在一个页面中爬取数据,故速度要快得多,且代码也较少。
对你有用就点个赞吧!
赞 (0)