R爬蟲(chóng)之上市公司公告批量下載
優(yōu)采云 發(fā)布時(shí)間: 2020-06-03 08:01
2017-4-13 17:46|發(fā)布者: 煉數成金_小數|查看: 22744|評論: 1|原作者: 黃耀鵬|來(lái)自: R語(yǔ)言英文社區
摘要: Selenium是一個(gè)用于測試網(wǎng)頁(yè)應用的開(kāi)源軟件。它提供了瀏覽器中的點(diǎn)擊,滾動(dòng),滑動(dòng),及文字輸入等驅動(dòng)程序。這樣,利用Selenium即可以通過(guò)腳本程序來(lái)代替人工進(jìn)行測試一個(gè)開(kāi)發(fā)軟件的各類(lèi)功能。在處理爬蟲(chóng)任務(wù)中,經(jīng)常 ...
tm
Python
測試
案例
開(kāi)源軟件
函數
selenium的安裝及使用介紹
Selenium是一個(gè)用于測試網(wǎng)頁(yè)應用的開(kāi)源軟件。它提供了瀏覽器中的點(diǎn)擊r軟件爬蟲(chóng),滾動(dòng),滑動(dòng)r軟件爬蟲(chóng),及文字輸入等驅動(dòng)程序。這樣,利用Selenium即可以通過(guò)腳本程序來(lái)代替人工進(jìn)行測試一個(gè)開(kāi)發(fā)軟件的各類(lèi)功能。
在處理爬蟲(chóng)任務(wù)中,經(jīng)常碰到須要輸入文字,進(jìn)行下拉菜單選擇,以及滑鼠點(diǎn)擊等情境。這個(gè)時(shí)侯,selenium就派上大用場(chǎng)了。
下面,我們先介紹一下Selenium的使用環(huán)境配置,接著(zhù)介紹怎樣通過(guò)R的拓展包Rwebdriver來(lái)使用Selenium,最后,展示一個(gè)爬蟲(chóng)案例應用。
安裝配置
安裝jre:
下載地址:#win
配置jre環(huán)境變量
下載selenium,并放至指定位置
下載地址:
啟動(dòng)selenium
打開(kāi)命令提示符
進(jìn)入selenium所在路徑
啟動(dòng)selenium
cd "C:\Program Files (x86)\Rwebdriver"
java -jar selenium-server-standalone-2.49.0.jar
### selenium接口函數介紹
『Automated Data Collection with R』一書(shū)的作者開(kāi)發(fā)了R包Rwebdriver,用于聯(lián)接啟用selenium。
該R包重要的函數如下:
更多細節請參考:
-『Automated Data Collection with R』第9章P253-P259
Selenium with Python
網(wǎng)頁(yè)開(kāi)發(fā)工具的使用介紹
?。ㄊ謩?dòng)演示)
XML提取器相關(guān)函數的使用
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()