- 目标
科创板开板以来,申报企业数量不断增加,目前已逾150家,拟通过爬虫获取所有申报企业的基本信息,例如审核状态、省份、行业、保荐机构、律师事务所、会计师事务所、保荐人、签字会计师、签字律师等信息。
- 网站分析
打开http://kcb.sse.com.cn/renewal/ 进入上交所科创板股票发行上市审核项目动态页面,可以看到页面已有比较清晰格式化的信息展示,包括全称、审核状态、行业、保荐机构、律师事务所、会计师事务所、更新日期、受理日期等信息。
翻页页面url不变,右键网页源代码中也无上述表格中的相关信息,故尝试通过requests获取html不能得到上述表格中相关信息,所以拟采取 selenium 中的webdriver模拟浏览器进行访问
(webdriver安装可参考https://blog.youkuaiyun.com/Alisen39/article/details/82930220)。
from selenium import webdriver
from lxml import etree
browser = webdriver.Chrome()
browser.get('http://kcb.sse.com.cn/renewal/') # page_source获取网页的源代码,然后可以使用正则表达式,css,xpath,bs4等来解析网页
html = etree.HTML(browser.page_source) #得到html
- 页面解析元素提取
在F12中通过定位相关字段,右键查看xpath获取目标元素的路径

定义函数 pagedataget(html),以提取每一页的关键信息,其中部分字段存在换行等情况,不能在一个路径下提取完整,需要加以判断整合。完整代码如下。
'''获取每页的数据'''
def pagedataget(html):
items = html.xpath('//*[@id="dataList1_container"]/tbody/tr')
num1=[];issuer_ful1=[];status1=[];province1=[];csrc_ind1=[];compinfourl=[];
sponsor_org1=[];lawfirm1=[];accountfirm1=[];update1=[];acceptdate1=[];
issuer_sec1=[];financing_amount1=[];sponsor1=[];accountant1=[];
lawyer1=[];assessor_org1=[];assessor1=[]
for item in items :
num=item.xpath('./td[@class="td_no_break text-align-center"]/text()')
if num:
num1.append(num)
issuer_ful=item.xpath('./td[@class="td_break_word_7 "]/a/text()[1]')
b=item.xpath('./td[@class="td_break_word_7 "]/a/text()[2]')
if issuer_ful and b:
issuer_ful=issuer_ful[0]+b[0]
issuer_ful1.append(issuer_ful)
else:
if issuer_ful:
issuer_ful=issuer_ful[0][0:]
issuer_ful1.append(issuer_ful)
url=item.xpath('./td[@class="td_break_word_7 "]/a/@href')
if url: