R爬虫之上市公司公告批量下载
优采云 发布时间: 2020-06-03 08:01
2017-4-13 17:46|发布者: 炼数成金_小数|查看: 22744|评论: 1|原作者: 黄耀鹏|来自: R语言英文社区
摘要: Selenium是一个用于测试网页应用的开源软件。它提供了浏览器中的点击,滚动,滑动,及文字输入等驱动程序。这样,利用Selenium即可以通过脚本程序来代替人工进行测试一个开发软件的各类功能。在处理爬虫任务中,经常 ...
tm
Python
测试
案例
开源软件
函数
selenium的安装及使用介绍
Selenium是一个用于测试网页应用的开源软件。它提供了浏览器中的点击r软件爬虫,滚动,滑动r软件爬虫,及文字输入等驱动程序。这样,利用Selenium即可以通过脚本程序来代替人工进行测试一个开发软件的各类功能。
在处理爬虫任务中,经常碰到须要输入文字,进行下拉菜单选择,以及滑鼠点击等情境。这个时侯,selenium就派上大用场了。
下面,我们先介绍一下Selenium的使用环境配置,接着介绍怎样通过R的拓展包Rwebdriver来使用Selenium,最后,展示一个爬虫案例应用。
安装配置
安装jre:
下载地址:#win
配置jre环境变量
下载selenium,并放至指定位置
下载地址:
启动selenium
打开命令提示符
进入selenium所在路径
启动selenium
cd "C:\Program Files (x86)\Rwebdriver"
java -jar selenium-server-standalone-2.49.0.jar
### selenium接口函数介绍
『Automated Data Collection with R』一书的作者开发了R包Rwebdriver,用于联接启用selenium。
该R包重要的函数如下:
更多细节请参考:
-『Automated Data Collection with R』第9章P253-P259
Selenium with Python
网页开发工具的使用介绍
(手动演示)
XML提取器相关函数的使用
xpathSApply(doc,path,fun = NULL)
可传入的fun如下:
案例演示——爬取上海证券交易所上市公司公告信息
#### packages we need ####
## ----------------------------------------------------------------------- ##
require(stringr)
require(XML)
require(RCurl)
library(Rwebdriver)
# set path
setwd("ListedCompanyAnnouncement")
# base url
BaseUrl<-"http://www.sse.com.cn/disclosure/listedinfo/announcement/"
#start a session
quit_session()
start_session(root = "http://localhost:4444/wd/hub/",browser = "firefox")
# post Base Url
post.url(url = BaseUrl)
# get xpath
StockCodeField<-element_xpath_find(value = '//*[@id="inputCode"]')
ClassificationField<-element_xpath_find(value = '/html/body/div[7]/div[2]/div[2]/div[2]/div/div/div/div/div[2]/div[1]/div[3]/div/button')
StartDateField<-element_xpath_find(value = '//*[@id="start_date"]')
EndDateField<-element_xpath_find(value = '//*[@id="end_date"]')
SearchField<-element_xpath_find(value = '//*[@id="btnQuery"]')
# fill stock code
StockCode<-"600000"
element_click(StockCodeField)
keys(StockCode)
Sys.sleep(2)
#fill classification field
element_click(ClassificationField)
# get announcement xpath
RegularAnnouncement<-element_xpath_find(value = '/html/body/div[7]/div[2]/div[2]/div[2]/div/div/div/div/div[2]/div[1]/div[3]/div/div/ul/li[2]')
Sys.sleep(2)
element_click(RegularAnnouncement)
# #fill start and end date
# element_click(StartDateField)
# today's xpath
EndToday<-element_xpath_find(value = '/html/body/div[13]/div[3]/table/tfoot/tr/th')
Sys.sleep(2)
element_click(EndDateField)
Sys.sleep(2)
element_click(EndToday)
#click search
element_click(SearchField)
###################################
####获得所有文件的link ##
all_links<-character()