前言
近年来,随着移动互联网时代的高涨,形成了如火如荼的创业潮,如耳熟能详的滴滴、快滴到如今的共享经济,前仆后继,有成有败。经常你会听见某某公司融资多少多少,某某公司向哪家公司注资多少等等之类的信息。于是好奇,在网上搜索了有关融资方面的网站,惊喜万分,找到了“投资界”这个官网(http://zdb.pedaily.cn/)。
官网上包含了各类事件,如投资事件、上市事件、并购事件等。而且每类事件都有详细的清单,如投资事件中包含融资方、投资方、融资方所属行业、融资事件、融资规模等信息。基于此,我又萌发了数据获取的念头,这里就把我爬虫的代码做一个分享。
数据爬虫
# ===== Python3 =====
# 导入第三方包
import requests
from bs4 import BeautifulSoup
import time
import pandas as pd
# 设置请求头
headers = {'Accept':'*/*','Accept-Encoding':'gzip, deflate','Accept-Language':'zh-CN,zh;q=0.9','Connection':'keep-alive','User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36'
}
# ===== 获取网站第一层链接 =====
# 空列表,用于存储所有“详情”的链接
urls = []
# 遍历所有投资事件的网页,并抓下“详情”链接
for i in range(1,652):
url = 'http://zdb.pedaily.cn/inv/p%s/' %i
# 发送请求
res = requests.get(url, headers = headers).text
# 解析源代码
soup = BeautifulSoup(res, 'html.parser')
# 获取“详情”对应的url
urls.extend(['http://zdb.pedaily.cn' + i.find('a')['href'] for i in soup.findAll('dt',{'class':'view'})[1:]])
# ===== 举例说明第一个投资事件的详细信息 =====
# 先举其中一条链接,作为数据获取的例子
url = urls[0]
# 请求
res = requests.get(url, headers = headers).text
# 解析
soup = BeautifulSoup(res, 'html.parser')
# 抓取目标字段
financing = soup.find('div',{'class':'info'}).findAll('li')[0].find('a').text
investment = soup.find('div',{'class':'info'}).findAll('li')[1].find('a').text
money = soup.find('div',{'class':'info'}).findAll('li')[2].text.split(':')[1]
turn = soup.find('div',{'class':'info'}).findAll('li')[3].text.split(':')[1]
date = soup.find('div',{'class':'info'}).findAll('li')[4].text.split(':')[1]
industry = soup.find('div',{'class':'info'}).findAll('li')[5].find('a').text
# 打印结果
print(financing,investment,money,turn,date,industry)
# ===== 抓取所有事件的详细信息 =====
# 构建空列表,用户后面存储数据
data = []
# 循环抓数
for url in urls:
# 获取源代码并解析
res = requests.get(url, headers = headers).text
soup = BeautifulSoup(res, 'html.parser')
# 异常处理
try:
# 目标数据获取
financing = soup.find('div',{'class':'info'}).findAll('li')[0].find('a').text
investment = soup.find('div',{'class':'info'}).findAll('li')[1].find('a').text
money = soup.find('div',{'class':'info'}).findAll('li')[2].text.split(':')[1]
turn = soup.find('div',{'class':'info'}).findAll('li')[3].text.split(':')[1]
date = soup.find('div',{'class':'info'}).findAll('li')[4].text.split(':')[1]
industry = soup.find('div',{'class':'info'}).findAll('li')[5].find('a').text
except:
pass # 数据存储到字典中
data.append({'financing':financing,'investment':investment,'money':money,'turn':turn,'date':date,'industry':industry})
# 停顿,防止反爬
time.sleep(3)
# 将抓取下来的信息构造成数据框对象
Invest_Events = pd.DataFrame(data)
# 数据导出
Invest_Events.to_excel('Invest_Events.xlsx', index = False)
考虑到运行时间比较长,这里就抓了6000多的融资事件,如需获取数据,可关注公众号(lsxxx2011)并回复“融资事件”即可获得代码和数据。
结语
OK,关于投资界官网中融资事件的数据爬虫就分享到这里,如果你有任何问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位朋友继续转发与分享文中的内容,让更多的人学习和进步。
关注“每天进步一点点2015”,与小编同进步!