1. 程式人生 > >selenium 爬取某基金網站資料

selenium 爬取某基金網站資料

# coding: utf-8
from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get(
    'http://fund.eastmoney.com/data/fundranking.html#tall;c0;r;szzf;pn100;ddesc;qsd20170531;qed20180531;qdii;zq;gg;gzbd;gzfs;bbzt;sfbb')
i = 1
while i < 41:
    i = i + 1
    driver.find_element_by_xpath('//label[@value={}]'.format(i)).click()
    time.sleep(5)
    trs = driver.find_elements_by_xpath('//table[@id="dbtable"]//tr')
    for tr in trs:
        ths = tr.find_elements_by_xpath('./td')
        with open('foundation.csv', 'a', encoding='utf-8') as f:
            for th in ths:
                f.write(th.text.replace('\n', '\r\r') + ',' if th.text else '')
            f.write('\n')
        print('儲存成功')

這個網站的基金資料是jQuery請求返回的,然後通過渲染到頁面上,請求下一頁也是ajax請求進行區域性重新整理,

但是,這個ajax返回的資料是類似於js指令碼的格式,不好直接提取,因此採用的selenium模擬點選的方式,

點選下一頁按鈕,直到沒有最後一頁,通過xpath提取頁面的資料,存入csv檔案中,方便在excle或者pandas分析。