持续会一向更新,由此能够与PYTHON结合贯彻部分有一点点复杂一点的网页抓取操作澳门永利备用网址

xpath用法

xpath用来分析html,获得有效的音信。上边是本人在其实中所用到的,后续会一贯更新:

  • page.xpath(“//div[position()>51]”) 获取地方大于51的享有div
  • page.xpath(“//td[@rowspan]”) 获取含有rowspan属性的具备td
  • page.xpath(“//td[@rowspan or not(@colspan)]”)
    获取具备含有rowspan属性和不带有colspan属性的td
  • page.xpath(“//*[contains(text(),’你好’)]”) 相配全体含有 你好
    字样的成分 ,
    text() 能够博得标签内的文字

上次有爱人问怎么抓取交易所网址的多寡,极其是野史数据,那Ritter别推荐使用selenium这一自动化测验框架。

原先selenium是用来达成大气依照浏览器的自动化测量试验的,但鉴于能够低价地推行JS代码,摸拟客商点击和操作,

之所以得以与PYTHON结合贯彻部分稍稍复杂一点的网页抓取操作。

下边就以抓取交易所网址的总结数据为例,表达二者结合的一对用法。

跟普通的抓取操作比较,稍微复杂一点的地点在于:

1)如下图所示,暗许抓取上交所网页数据只可以取到近日贰个工作日的计算数据,要是想取过去的数目,只可以人工点击日历控件完毕日期选用,无法输入,由此必需:

a)去掉日期成分的只读属性

b)清空原有日期值,设置想读取的日期值

c)由于页面有延期加载的气象,因而必得在方便的点设定一定的等候时间

澳门永利备用网址 1

“`

#encoding:utf8

“””

@author:xuyuming

@contact:283548048@qq.com

@time:2016/8/8 22:47

“””

fromseleniumimportwebdriver

importtime

###############################取深圳证交所相关统计数据#################################################

driver=webdriver.Chrome()

driver.get(“http://www.szse.cn/main/marketdata/tjsj/jyjg/“)

#抓取上海证交所交易日历数量

driver.find_element_by_name(“txtDate”).clear()

#安装计算数据的多少日期

driver.find_element_by_name(“txtDate”).send_keys(“2016-08-05”)

#点击查询开关

driver.find_element_by_id(“1804_tab1_btn”).click()

time.sleep(1)

#股票总成交额 ,从CHROME自带的“检查”功用博得XPATH路线为
 //*[@id=”REPORTID_tab1″]/tbody/tr[2]/td[3]

total_tradeamt=driver.find_element_by_xpath(“//*[@id=’REPORTID_tab1′]/tbody/tr[2]/td[3]”).text

#股票总流通股票总市值 //*[@id=”REPORTID_tab1″]/tbody/tr[2]/td[8]

negotiableValue=driver.find_element_by_xpath(‘//*[@id=”REPORTID_tab1″]/tbody/tr[2]/td[8]’).text

#b股总成交额

tradeamtB=driver.find_element_by_xpath(‘//*[@id=”REPORTID_tab1″]/tbody/tr[4]/td[3]’).text

#b股总流通股票总值

negotiableValueB=driver.find_element_by_xpath(‘//*[@id=”REPORTID_tab1″]/tbody/tr[4]/td[8]’).text

driver.quit()

# 深市A股总流通股票总值为深市总工会股票总市值减去深市B种市场股票总值

negotiableValueA_sz=int(negotiableValue.replace(‘,’,”))-int(negotiableValueB.replace(‘,’,”))

# 深市A股总成交金额为深市中华全国总工会成交金额减去深市B种股票总成交金额

tradeamtA_sz=int(total_tradeamt.replace(‘,’,”))-int(tradeamtB.replace(‘,’,”))

#打字与印刷A股流通市场总值和成交额

printnegotiableValueA_sz,tradeamtA_sz

##################################取上海证交全数关总结数据###############################################

#remove readonly attribute

driver=webdriver.Chrome()

driver.get(“http://www.sse.com.cn/market/stockdata/overview/day/“)

#等候一分钟,确认保障页面加载实现,以便于继续修改DOM成分只读属性后不会被页面延迟加载后覆盖

time.sleep(1)

#去掉成分的只读属性

driver.execute_script(“var
setDate=document.getElementById(‘start_date2’);setDate.removeAttribute(‘readonly’);”)

#一定到日期控件

setDatElement=driver.find_element_by_xpath(“//input[@id=’start_date2′]”)

#免除内容

setDatElement.clear()

#双重填上点名的值

setDatElement.send_keys(“2016-08-05”)

#点击“查询”按钮

driver.find_element_by_id(“btnQuery”).click()

time.sleep(1)

negotiableValueA_sh=driver.find_element_by_xpath(‘//*[@id=”tableData_934″]/div[2]/table/tbody/tr[3]/td[3]/div’).text

#取最新的沪市A股成交金额//*[@id=”tableData_934″]/div[2]/table/tbody/tr[5]/td[3]/div

trdAmtA_sh=driver.find_element_by_xpath(‘//*[@id=”tableData_934″]/div[2]/table/tbody/tr[5]/td[3]/div’).text

#取最新的沪市A股平均市盈率

profitRateA_sh=driver.find_element_by_xpath(‘//*[@id=”tableData_934″]/div[2]/table/tbody/tr[7]/td[3]/div’).text

#打字与印刷沪市成交金额 ,流通股票总市值以及完整市盈率

printnegotiableValueA_sh,trdAmtA_sh,profitRateA_sh

driver.quit()

“`