Python學(xué)習(xí)筆記之抓取某只基金歷史凈值數(shù)據(jù)實(shí)戰(zhàn)案例-創(chuàng)新互聯(lián)

本文實(shí)例講述了Python抓取某只基金歷史凈值數(shù)據(jù)。分享給大家供大家參考,具體如下:

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的松江網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

http://fund.eastmoney.com/f10/jjjz_519961.html

Python學(xué)習(xí)筆記之抓取某只基金歷史凈值數(shù)據(jù)實(shí)戰(zhàn)案例

1、接下來(lái),我們需要?jiǎng)邮职堰@些html抓取下來(lái)(這部分知識(shí)我們之前已經(jīng)學(xué)過(guò),現(xiàn)在不妨重溫)

# coding: utf-8
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
from bs4 import BeautifulSoup
from threading import Thread,Lock
import os
import csv
# 下面是利用 selenium 抓取html頁(yè)面的代碼
# 初始化函數(shù)
def initSpider():
  driver = webdriver.PhantomJS(executable_path=r"你phantomjs可執(zhí)行文件的絕對(duì)路徑")
  driver.get("http://fund.eastmoney.com/f10/jjjz_519961.html") # 要抓取的網(wǎng)頁(yè)地址
  # 找到"下一頁(yè)"按鈕,就可以得到它前面的一個(gè)label,就是總頁(yè)數(shù)
  getPage_text = driver.find_element_by_id("pagebar").find_element_by_xpath(
    "div[@class='pagebtns']/label[text()='下一頁(yè)']/preceding-sibling::label[1]").get_attribute("innerHTML")
  # 得到總共有多少頁(yè)
  total_page = int("".join(filter(str.isdigit, getPage_text)))
  # 返回
  return (driver,total_page)
# 獲取html內(nèi)容
def getData(myrange,driver,lock):
  for x in myrange:
    # 鎖住
    lock.acquire()
    tonum = driver.find_element_by_id("pagebar").find_element_by_xpath(
      "div[@class='pagebtns']/input[@class='pnum']") # 得到 頁(yè)碼文本框
    jumpbtn = driver.find_element_by_id("pagebar").find_element_by_xpath(
      "div[@class='pagebtns']/input[@class='pgo']") # 跳轉(zhuǎn)到按鈕
    tonum.clear() # 第x頁(yè) 輸入框
    tonum.send_keys(str(x)) # 去第x頁(yè)
    jumpbtn.click() # 點(diǎn)擊按鈕
    # 抓取
    WebDriverWait(driver, 20).until(lambda driver: driver.find_element_by_id("pagebar").find_element_by_xpath("div[@class='pagebtns']/label[@value={0} and @class='cur']".format(x)) != None)
    # 保存到項(xiàng)目中
    with open("../htmls/details/{0}.txt".format(x), 'wb') as f:
      f.write(driver.find_element_by_id("jztable").get_attribute("innerHTML").encode('utf-8'))
      f.close()
    # 解鎖
    lock.release()
# 開始抓取函數(shù)
def beginSpider():
  # 初始化爬蟲
  (driver, total_page) = initSpider()
  # 創(chuàng)建鎖
  lock = Lock()
  r = range(1, int(total_page)+1)
  step = 10
  range_list = [r[x:x + step] for x in range(0, len(r), step)]  #把頁(yè)碼分段
  thread_list = []
  for r in range_list:
    t = Thread(target=getData, args=(r,driver,lock))
    thread_list.append(t)
    t.start()
  for t in thread_list:
    t.join() # 這一步是需要的,等待線程全部執(zhí)行完成
  print("抓取完成")
# #################上面代碼就完成了 抓取遠(yuǎn)程網(wǎng)站html內(nèi)容并保存到項(xiàng)目中的 過(guò)程

分享標(biāo)題:Python學(xué)習(xí)筆記之抓取某只基金歷史凈值數(shù)據(jù)實(shí)戰(zhàn)案例-創(chuàng)新互聯(lián)
文章URL:http://bm7419.com/article48/ddhjep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google外貿(mào)網(wǎng)站建設(shè)、虛擬主機(jī)微信公眾號(hào)、商城網(wǎng)站、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)