##并购重组数据爬取案例
1、寻找并购数据网址,网址见案例代码;
2、分析数据在网页上存在的形式。例如本文:每次跳转页面,都会发送一个请求,返回一个Json格式的结果。我们可以看到json里面的数据就是我们在网页中看到的并购数据,我们可以对该json文件进行解析就可以获取到需要的并购重组数据;

3、通过目前的json获取到的数据仅仅只是一个页面的数据,我们查看请求地址发现,页面跳转,参数pageNumber跟随着页面的跳转变化。因此我们可以通过遍历pageNumber来爬取所以页码。当然由于pageSize参数的存在,实际上,给我们提供了一次性爬取的技巧,但是本文暂不是使用该参数进行偷懒,采用遍历页码的方式爬取。

https://datacenter-web.eastmoney.com/api/data/v1/get?callback=jQuery112304752391324797971_1649497021854&sortColumns=SCGGRQ&sortTypes=-1&pageSize=50&pageNumber=2&columns=ALL&source=WEB&token=894050c76af8597a853f5b408b759f5d&reportName=RPTA_WEB_BGCZMX

4、通过python写脚本实时获取该网页的页数

    def tablelenth(self):""":comment:获取实时爬取数据的页码的长度:return:脚本运行时间下的东方财富并购重组页面下数据表的页数"""bingouhtml=request.urlopen(r'https://data.eastmoney.com/bgcz/').read()bingouhtml=str(bingouhtml)pattern=r'"pages":(\d{4,5})'lenlist=re.findall(pattern,bingouhtml)if len(lenlist)==1:return int(lenlist[0])else:print('页码长度获取异常')sys.exit(0)

5、批量生成请求连接URL

    def geturl(self):""":comment 根据page_length,获取并购url链接,每从第1页开始到page_length页;:return url链接列表"""page_length=self.tablelenth()urlList=[]for i in range (page_length):json_url='https://datacenter-web.eastmoney.com/api/data/get?callback=jQuery112304809089840055041_1640451070306&st=SCGGRQ&sr=-1&ps=50&p=' +str(i+1)+'&sty=ALL&source=WEB&token=894050c76af8597a853f5b408b759f5d&type=RPTA_WEB_BGCZMX'urlList.append(json_url)return urlList

6、遍历请求连接获取并购数据,将并购数据写入excel中。

    def get_data(self):''':comment 根据url连接,获取并购数据,并将他们写入到execl中【⚠️该方法主要通过json.loads,将str类型转化为dict,通过对dict的解析获取数据,缺点在于没办法直接解析到json中带[]部分的内容】:return:'''urlList=self.geturl()datamatrix = []for i in range(len(urlList)):result=request.urlopen(urlList[i]).read().decode("utf-8")pattern=r'jQuery112304809089840055041_1640451070306\((.*)\)'result=re.findall(pattern,result)result=json.loads(result[0])result=result["result"]["data"]for data in result:rowlist=[]rowlist.append(data['MXID'])rowlist.append(data['H_COMNAME'])rowlist.append(data['G_GOMNAME'])rowlist.append(data['S_COMNAME'])rowlist.append(data['SCODE'])rowlist.append(data['SNAME'])rowlist.append(data['ZRBL'])rowlist.append(data['OBJTYPE'])rowlist.append(data['JYJE'])rowlist.append(data['JD'])rowlist.append(data['ZRFS'])rowlist.append(data['SCGGRQ'])rowlist.append(data['ANNOUNDATE'])rowlist.append(data['BZNAME'])rowlist.append(data['TJEBZH'])rowlist.append(data['MKT'])rowlist.append(data['REORGANIZECODE'])datamatrix.append(rowlist)workbook = xlwt.Workbook()sheet = workbook.add_sheet("并购数据")for i in range(len(datamatrix)):for j in range(len(datamatrix[i])):sheet.write(i, j, datamatrix[i][j])workbook.save(r"并购数据.xlsx")

7、分享本案例代码【复制即可运行】

#自行导入对应第三方包,pip都能弄到。
import json
import re
import jsonpath
import xlwt
from urllib import request
import sys
class CatchBinGouData():def tablelenth(self):""":comment:获取实时爬取数据的页码的长度:return:脚本运行时间下的东方财富并购重组页面下数据表的页数"""bingouhtml=request.urlopen(r'https://data.eastmoney.com/bgcz/').read()bingouhtml=str(bingouhtml)pattern=r'"pages":(\d{4,5})'lenlist=re.findall(pattern,bingouhtml)if len(lenlist)==1:return int(lenlist[0])else:print('页码长度获取异常')sys.exit(0)def geturl(self):""":comment 根据page_length,获取并购url链接,每从第1页开始到page_length页;:return url链接列表"""page_length=self.tablelenth()urlList=[]for i in range (page_length):json_url='https://datacenter-web.eastmoney.com/api/data/get?callback=jQuery112304809089840055041_1640451070306&st=SCGGRQ&sr=-1&ps=50&p=' +str(i+1)+'&sty=ALL&source=WEB&token=894050c76af8597a853f5b408b759f5d&type=RPTA_WEB_BGCZMX'urlList.append(json_url)return urlListdef get_data(self):''':comment 根据url连接,获取并购数据,并将他们写入到execl中【⚠️该方法主要通过json.loads,将str类型转化为dict,通过对dict的解析获取数据,缺点在于没办法直接解析到json中带[]部分的内容】:return:'''urlList=self.geturl()datamatrix = []for i in range(len(urlList)):result=request.urlopen(urlList[i]).read().decode("utf-8")pattern=r'jQuery112304809089840055041_1640451070306\((.*)\)'result=re.findall(pattern,result)result=json.loads(result[0])result=result["result"]["data"]for data in result:rowlist=[]rowlist.append(data['MXID'])rowlist.append(data['H_COMNAME'])rowlist.append(data['G_GOMNAME'])rowlist.append(data['S_COMNAME'])rowlist.append(data['SCODE'])rowlist.append(data['SNAME'])rowlist.append(data['ZRBL'])rowlist.append(data['OBJTYPE'])rowlist.append(data['JYJE'])rowlist.append(data['JD'])rowlist.append(data['ZRFS'])rowlist.append(data['SCGGRQ'])rowlist.append(data['ANNOUNDATE'])rowlist.append(data['BZNAME'])rowlist.append(data['TJEBZH'])rowlist.append(data['MKT'])rowlist.append(data['REORGANIZECODE'])datamatrix.append(rowlist)workbook = xlwt.Workbook()sheet = workbook.add_sheet("并购数据")for i in range(len(datamatrix)):for j in range(len(datamatrix[i])):sheet.write(i, j, datamatrix[i][j])workbook.save(r"并购数据.xlsx")if __name__ == '__main__':bgd=CatchBinGouData()table=bgd.get_data()

python爬虫获取并购重组数据相关推荐

  1. Python 爬虫 | 获取历史涨停数据

    最近想研究一下连板的个股有没有什么规律(暴富我来了),这一篇主要就是做数据准备的. 目录 1.数据获取 2.代码实现 1.数据获取 数据来源就是问财,查指定日期的涨停即可获得当日的数据. 2.代码实现 ...

  2. [遥感]利用python爬虫获取美国冰雪数据中心的数据

    00. 写在前面: 由于最近学习方面需要用到NSIDC(美国冰雪数据中心)的数据进行计算,但是手工下载又特别耗费时间,需要一个一个去点击,所以我尝试着去写一个小爬虫获取所需数据. 对所有需要在NSID ...

  3. 我是如何把python爬虫获取到的数据写入Excel的?

    如何将爬虫获取的数据写入Excel,这一点我在爬虫文章几乎都是采用这种方式来进行操作的 写入Excel的目的是为了后续更加方便的使用pandas对数据进行清洗.筛选.过滤等操作. 为进一步数据研究.可 ...

  4. python爬虫获取的网页数据为什么要加[0-python3爬虫爬取网页思路及常见问题(原创)...

    学习爬虫有一段时间了,对遇到的一些问题进行一下总结. 爬虫流程可大致分为:请求网页(request),获取响应(response),解析(parse),保存(save). 下面分别说下这几个过程中可以 ...

  5. python爬虫获取的网页数据为什么要加[0-[Python爬虫] 等待网页加载后再获取内容...

    0x0 背景 最近在学习Python爬虫的相关知识,主要是之前有一个小idea想要用Python实现,沉寂了一年,近期终于下定决心要利用假期时间首要解决此项任务,不然拖到最后都没完成,自己遗憾不说,还 ...

  6. python爬虫获取的网页数据为什么要加[0-python爬虫解析页面数据的三种方式

    re模块 re.S表示匹配单行 re.M表示匹配多行 使用re模块提取图片url,下载所有糗事百科中的图片 普通版 import requests import re import os if not ...

  7. python爬虫获取的网页数据为什么要加[0-使用 Python 爬取网页数据

    1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 ...

  8. Python爬虫获取京东大数据!其实爬虫真的很简单!

    简介 Python是一个简洁的语言,集成性非常高,我们可以使用集成的工具库,本文中用到的库有requests.re 找到我们需要爬取的链接 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...

  9. 利用python爬虫获取豆瓣读书数据建立书单

    0. 写在前面 网络爬虫: A Web crawler, sometimes called a spider, is an Internet bot that systematically brows ...

最新文章

  1. Linux计划任务详解
  2. Unhandled exception 0xC0000005: Access violation writing location
  3. oracle之数据处理之其他数据库对象练习
  4. oracle表被锁了怎么处理
  5. JavaScript 专题之函数柯里化
  6. python中oxf2是什么_0x02-StartingPoint-Oopsie
  7. Delphi用ini文档实现界面无闪烁多语言转换
  8. 阶段3 2.Spring_07.银行转账案例_5 编写业务层和持久层事务控制代码并配置spring的ioc...
  9. 一款简洁大气的个人主页源码
  10. NAIPC2018 Zoning Houses(ST表)
  11. 农业技术:从能量的角度看农业革命(垄耕种植法)
  12. HBase MOB特性介绍
  13. 企业测试环境部署(一)
  14. 【转帖】NAT在NDIS中间层驱动中的实现
  15. 大数据必学语言Scala(一):Scala简介
  16. 程序员的算法趣题Q55: 平分蛋糕
  17. 无需域名实现frp多端口内网穿透
  18. 超轻型飞机 - 蟋蟀,世界上最小的双引擎载人飞机!
  19. Django项目在Linux服务器上部署和躺过的坑
  20. 大学计算机学不懂还挂科想转专业,2018大一新生转专业难不难?那些转了专业的学生居然还会后悔!...

热门文章

  1. 软件测试—— 界面测试(三 )
  2. QQ会员专用头像大抢劫!
  3. python三行情书_不知道怎么向女神表白?Python三大神技分分钟带你成功逆袭!
  4. Content-Disposition 设置下载文件名称filename中有空格 狐火浏览器不显示空格后面的部分
  5. java报错出现未知源,java.io.FileInputStream.(未知来源)
  6. 如何开始使用Word2Vec-然后使其工作
  7. Android 29: remount failed
  8. 【活动回顾】上海区块链开发者大会(2021)首日精彩回顾
  9. codeforces 1311
  10. logisim计组实验五 CRC校验电路