爬虫笔记——东方财富科创板数据爬取(selenium方法)

  • 网站观察
  • 网站分析
    • 公司详情页面
  • 具体代码

selenium方式爬取
优点:无需观察网站去查找数据来源
缺点:速度较requests方法更慢

网站观察

网址:东方财富科创板数据

===========================================================

===========================================================

网站分析

可以发现,由于在网页中存在多个公司,且网站代码中对每个标签的区分度并不高,所以直接在该网页中爬取比较复杂,所以这里选择先爬取每个公司的详情介绍的链接(href属性中每个公司都有一个对应的code编号),然后在每个公司的详情链接网站中爬取想要的信息。

===========================================================

公司详情页面

公司详情链接的页面如下:

===========================================================
可以发现网站也是动态加载的,那么可以采取selenium或者requests的方式爬取数据,其中selenium方式不需要去查找动态加载部分,直接爬取就行,但是由于每次需要访问不同页面,速度就要更慢,这里介绍selenium方法爬取,下一篇文章:爬虫笔记——东方财富科创板数据爬取(requests方法)介绍requests方法。

具体代码

代码如下,注意在run函数中,需要根据爬取的总共条数定义一下函数的参数,这里由于每页为50个公司,总共只有149条数据,故参数为(50,149):

# 东方财富科创板数据爬取-selenium
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from lxml import etree
import re
import time
import pandas as pdclass eastmoneyspider():def __init__(self):self.driver = webdriver.Chrome()self.url = "http://data.eastmoney.com/kcb/"self.page = 1self.company_detail_urls = []self.kcb_data = []self.spider_count = 1def run(self):# 爬取公司详细网址(这里共有149个公司,每页50条数据,第三页只有49条,可根据变动情况更改函数参数)self.parse_detail_url(50,149)# 详细数据爬取self.parse_page()# 数据保存self.save_data()print("爬取完成!")# 获取每个公司的链接,其中pagesize为每页公司个数,datasize为公司总数def parse_detail_url(self,pagesize,datasize):self.driver.get(self.url)while True:# 下一页按钮nextpage_Btn = self.driver.find_element_by_xpath('//div[@id="PageCont1"]/a[last()-1]')print("即将爬取第%d页"%self.page)# 爬取过程WebDriverWait(self.driver,timeout=10).until(EC.presence_of_element_located((By.XPATH,'//div[@id="PageCont1"]/a[last()-1]')))source = self.driver.page_sourcedetail = re.findall('/kcb/detail/(.*?).html',source)# 每个页面中存在重复数据,下面去除重复部分urls = list(set(detail))urls.sort(key=detail.index)# 将网址填全detail_urls = list(map(lambda x:"http://data.eastmoney.com/kcb/detail/"+x+".html",urls))# 由于在每个页面中存在其他公司数据(拟申报企业),这里只取每页的前pagesize(50)个,即每页显示的个数detail_urls = detail_urls[:pagesize]# 公司详情网址汇总[self.company_detail_urls.append(x) for x in detail_urls]print("第%d页爬取完成"%self.page)if "nolink" in nextpage_Btn.get_attribute("class"):self.company_detail_urls = self.company_detail_urls[:datasize]print("公司详情网址爬取完成!")print("="*40)breakelse:nextpage_Btn.click()self.page += 1time.sleep(1)# 获取每个公司的详细信息def parse_page(self):print("开始爬取公司详细数据")for url in self.company_detail_urls:self.driver.get(url)source = self.driver.page_sourcehtml = etree.HTML(source)company_details = html.xpath('//tr/td/text()')company_name = company_details[2]company_abbreviation = company_details[6]accept_date = company_details[4]update_date = company_details[12]state = company_details[10]registration = company_details[14]industry = company_details[16]sponsorship_agency = company_details[18]law_agency = company_details[26]account_agency = company_details[22]company = {"公司名称":company_name,"公司简称":company_abbreviation,"公司详情网址":url,"受理日期":accept_date,"更新日期":update_date,"审核状态":state,"注册地":registration,"行业":industry,"保荐机构":sponsorship_agency,"律师事务所":law_agency,"会计师事务所":account_agency}self.kcb_data.append(company)print("已爬取%d条数据"%self.spider_count)self.spider_count += 1def save_data(self):data = pd.DataFrame(self.kcb_data)data = data[["公司名称","公司简称","公司详情网址","审核状态","注册地","行业","保荐机构","律师事务所","会计师事务所","更新日期","受理日期"]]data.to_excel('./data/kcb_data_spider_selenium.xlsx',encoding='utf-8-sig',index=False)def main():kcb_data = eastmoneyspider()kcb_data.run()main()

有用就点个赞吧!

爬虫笔记——东方财富科创板数据爬取(selenium方法)相关推荐

  1. 爬虫笔记——东方财富科创板数据爬取(requests方法)

    爬虫笔记--东方财富科创板数据爬取(requests方法) 网页观察 网页源代码分析 具体代码 上篇文章:爬虫笔记--东方财富科创板数据爬取(selenium方法)介绍了selenium爬取东方财富科 ...

  2. 东方财富单页tables数据爬取selenium

    爬取当天龙虎榜买入机构大于2并且涨停的股票 龙虎榜机构每日买卖网址:机构买卖每日统计 _ 数据中心 _ 东方财富网 首先将当前页面的数据获取下来: # 设置变量url url = 'http://da ...

  3. python爬虫网络数据包_Python爬虫之多线程图虫网数据爬取(十六)

    Python爬虫之多线程图虫网数据爬取(十六) 发布时间:2019-05-14 10:11, 浏览次数:289 , 标签: Python 原创不易,转载前请注明博主的链接地址:Blessy_Zhu h ...

  4. 【EduCoder答案】Scrapy爬虫(二)热门网站数据爬取

    简介 答案查询的入口网页版 并不是所有的关卡都有答案,有些只有部分关卡有 不要直接复制答案哦 Scrapy爬虫(二)热门网站数据爬取 >>>查看 第1关:猫眼电影排行TOP100信息 ...

  5. 爬虫项目——B站石原里美视频数据爬取

    爬虫项目--B站石原里美视频数据爬取 1. 爬虫原理 2. 数据爬取 2.1 库函数的引用 2.2 定义URL翻页函数 2.3 定义储存TXT文件函数 2.4 定义爬取函数 2.5 主函数 2.6 运 ...

  6. Python实践 - 网络爬虫笔记 - 2、从网站上爬取公开信息

    Python实践笔记 - 2.从网站上爬取公开信息 张板书的Python的实践笔记,包括笔记与DeBug的经历. 为了完成一个比较麻烦的实习任务,尝试着做了这样一个爬虫项目. 任务要求之一是要检索安徽 ...

  7. Python爬虫:用BeautifulSoup进行NBA数据爬取

    爬虫主要就是要过滤掉网页中没用的信息.抓取网页中实用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解.如网页的标签,网页的语言等知识,推荐去W3School: W3s ...

  8. 爬虫实战:链家租房数据爬取,实习僧网站数据爬取

    前面已经进行了爬虫基础部分的学习,于是自己也尝试爬了一些网站数据,用的策略都是比较简单,可能有些因素没有考虑到,但是也爬取到了一定的数据,下面介绍两个爬过的案例. 爬虫实战 链家网站爬取 实习僧网站爬 ...

  9. python爬虫基础(12:app数据爬取)

    我们之前一直都在爬取网页数据,但有些企业并没有提供web网页服务,而是提供了app服务,还有些web网页数据的各种反爬虫措施太牛逼,这时候如果从app端爬取兴许更容易得多,本篇就来介绍app数据如何爬 ...

最新文章

  1. Retrofit 网络请求参数注解@Path @Field @Query 等使用
  2. 草根seo站长利用网站赚钱的方法
  3. php百度地图添加标记,JavaScript API - 自定义标注 | 百度地图API SDK
  4. 基于Proxy思想的Android插件框架
  5. 在windows下用VMware虚拟机来安装linux
  6. 稳定币兑换器Orbits发布路线图,包括发行治理代币ORB等
  7. DevExpress gridcontrol添加了复选框删除选中的多行/批量删除的方法
  8. Bailian4111 判断游戏胜者-Who Is the Winner【文本处理】
  9. 关联分析研究思路及应用:GWASTWAS
  10. Java 实现万年历
  11. oracle11g教程视频教程,最新oracle11g DBA 开发和应用数据库视频教程_IT教程网
  12. java基础之ArrayLis类
  13. (一)CGAL库应用:指定平面切割模型并用openGL显示该层面轮廓
  14. 交换机的Vlan技术 以及Vlan隔离和 端口隔离区别
  15. linux中文是楷体,Linux中安装宋体楷体
  16. 3-----A Forcast for Bicycle Rental Demand Based on Random Forests and Multiple Linear Regression
  17. Unity3D-设置地形
  18. How to tame java GC pauses? Surviving 16GiB heap and greater
  19. 公司如何设计合伙人股权的进入和退出机制
  20. 关店歇业?当黄金时代成为历史,快时尚品牌的花式自救

热门文章

  1. 关于ubuntu系统的scp服务提示Permission denied
  2. 地图制图领域使用计算机优点在于哪些方面,电子地图制图的运用与发展
  3. 笔记:基于freeradius 3.0的wifi认证
  4. 打开Skype的时候提醒:TOM-Skype 已经停止工作,这是什么意思? 重装了一遍还是不能用。...
  5. Fedora 33 安装wine-6.0 微信3.0
  6. 银行金融计算机考试成绩查询系统,速看!人民银行成绩出了!戳进查分数+看排名!...
  7. 利用CSS让dl dt dd呈现多行多列效果
  8. oracle的并行原理
  9. Jupyter 福音: 官方可视化 Debug 工具!
  10. leetcode 1567 替换所有问号