爬虫笔记——东方财富科创板数据爬取(selenium方法)
爬虫笔记——东方财富科创板数据爬取(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方法)相关推荐
- 爬虫笔记——东方财富科创板数据爬取(requests方法)
爬虫笔记--东方财富科创板数据爬取(requests方法) 网页观察 网页源代码分析 具体代码 上篇文章:爬虫笔记--东方财富科创板数据爬取(selenium方法)介绍了selenium爬取东方财富科 ...
- 东方财富单页tables数据爬取selenium
爬取当天龙虎榜买入机构大于2并且涨停的股票 龙虎榜机构每日买卖网址:机构买卖每日统计 _ 数据中心 _ 东方财富网 首先将当前页面的数据获取下来: # 设置变量url url = 'http://da ...
- python爬虫网络数据包_Python爬虫之多线程图虫网数据爬取(十六)
Python爬虫之多线程图虫网数据爬取(十六) 发布时间:2019-05-14 10:11, 浏览次数:289 , 标签: Python 原创不易,转载前请注明博主的链接地址:Blessy_Zhu h ...
- 【EduCoder答案】Scrapy爬虫(二)热门网站数据爬取
简介 答案查询的入口网页版 并不是所有的关卡都有答案,有些只有部分关卡有 不要直接复制答案哦 Scrapy爬虫(二)热门网站数据爬取 >>>查看 第1关:猫眼电影排行TOP100信息 ...
- 爬虫项目——B站石原里美视频数据爬取
爬虫项目--B站石原里美视频数据爬取 1. 爬虫原理 2. 数据爬取 2.1 库函数的引用 2.2 定义URL翻页函数 2.3 定义储存TXT文件函数 2.4 定义爬取函数 2.5 主函数 2.6 运 ...
- Python实践 - 网络爬虫笔记 - 2、从网站上爬取公开信息
Python实践笔记 - 2.从网站上爬取公开信息 张板书的Python的实践笔记,包括笔记与DeBug的经历. 为了完成一个比较麻烦的实习任务,尝试着做了这样一个爬虫项目. 任务要求之一是要检索安徽 ...
- Python爬虫:用BeautifulSoup进行NBA数据爬取
爬虫主要就是要过滤掉网页中没用的信息.抓取网页中实用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解.如网页的标签,网页的语言等知识,推荐去W3School: W3s ...
- 爬虫实战:链家租房数据爬取,实习僧网站数据爬取
前面已经进行了爬虫基础部分的学习,于是自己也尝试爬了一些网站数据,用的策略都是比较简单,可能有些因素没有考虑到,但是也爬取到了一定的数据,下面介绍两个爬过的案例. 爬虫实战 链家网站爬取 实习僧网站爬 ...
- python爬虫基础(12:app数据爬取)
我们之前一直都在爬取网页数据,但有些企业并没有提供web网页服务,而是提供了app服务,还有些web网页数据的各种反爬虫措施太牛逼,这时候如果从app端爬取兴许更容易得多,本篇就来介绍app数据如何爬 ...
最新文章
- Retrofit 网络请求参数注解@Path @Field @Query 等使用
- 草根seo站长利用网站赚钱的方法
- php百度地图添加标记,JavaScript API - 自定义标注 | 百度地图API SDK
- 基于Proxy思想的Android插件框架
- 在windows下用VMware虚拟机来安装linux
- 稳定币兑换器Orbits发布路线图,包括发行治理代币ORB等
- DevExpress gridcontrol添加了复选框删除选中的多行/批量删除的方法
- Bailian4111 判断游戏胜者-Who Is the Winner【文本处理】
- 关联分析研究思路及应用:GWASTWAS
- Java 实现万年历
- oracle11g教程视频教程,最新oracle11g DBA 开发和应用数据库视频教程_IT教程网
- java基础之ArrayLis类
- (一)CGAL库应用:指定平面切割模型并用openGL显示该层面轮廓
- 交换机的Vlan技术 以及Vlan隔离和 端口隔离区别
- linux中文是楷体,Linux中安装宋体楷体
- 3-----A Forcast for Bicycle Rental Demand Based on Random Forests and Multiple Linear Regression
- Unity3D-设置地形
- How to tame java GC pauses? Surviving 16GiB heap and greater
- 公司如何设计合伙人股权的进入和退出机制
- 关店歇业?当黄金时代成为历史,快时尚品牌的花式自救
热门文章
- 关于ubuntu系统的scp服务提示Permission denied
- 地图制图领域使用计算机优点在于哪些方面,电子地图制图的运用与发展
- 笔记:基于freeradius 3.0的wifi认证
- 打开Skype的时候提醒:TOM-Skype 已经停止工作,这是什么意思? 重装了一遍还是不能用。...
- Fedora 33 安装wine-6.0 微信3.0
- 银行金融计算机考试成绩查询系统,速看!人民银行成绩出了!戳进查分数+看排名!...
- 利用CSS让dl dt dd呈现多行多列效果
- oracle的并行原理
- Jupyter 福音: 官方可视化 Debug 工具!
- leetcode 1567 替换所有问号