日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬取数据案例分析_基于Python及webdriver的网页抓取案例

發布時間:2024/9/18 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取数据案例分析_基于Python及webdriver的网页抓取案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上次有朋友問怎么抓取交易所網站的數據,特別是歷史數據,這里特別推薦使用selenium這一自動化測試框架。

原本selenium是用來完成大量基于瀏覽器的自動化測試的,但由于可以方便地執行JS代碼,摸擬用戶點擊和操作,

因此可以與PYTHON結合實現一些稍微復雜一點的網頁抓取操作。

下面就以抓取交易所網站的統計數據為例,說明兩者結合的一些用法。

跟普通的抓取操作相比,稍微復雜一點的地方在于:

1)如下圖所示,默認抓取上交所網頁數據只能取到最近一個工作日的統計數據,如果想取過去的數據,只能人工點擊日歷控件完成日期選擇,不能輸入,因此必須:

a)去掉日期元素的只讀屬性

b)清空原有日期值,設置想讀取的日期值

c)由于頁面有延遲加載的情況,因此必須在合適的點設定一定的等待時間

#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()

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的python爬取数据案例分析_基于Python及webdriver的网页抓取案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。