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

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

1、接下來,我們需要?jiǎng)邮职堰@些html抓取下來(這部分知識(shí)我們之前已經(jīng)學(xué)過,現(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頁面的代碼
# 初始化函數(shù)
def initSpider():
driver = webdriver.PhantomJS(executable_path=r"你phantomjs可執(zhí)行文件的絕對(duì)路徑")
driver.get("http://fund.eastmoney.com/f10/jjjz_519961.html") # 要抓取的網(wǎng)頁地址
# 找到"下一頁"按鈕,就可以得到它前面的一個(gè)label,就是總頁數(shù)
getPage_text = driver.find_element_by_id("pagebar").find_element_by_xpath(
"div[@class='pagebtns']/label[text()='下一頁']/preceding-sibling::label[1]").get_attribute("innerHTML")
# 得到總共有多少頁
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']") # 得到 頁碼文本框
jumpbtn = driver.find_element_by_id("pagebar").find_element_by_xpath(
"div[@class='pagebtns']/input[@class='pgo']") # 跳轉(zhuǎn)到按鈕
tonum.clear() # 第x頁 輸入框
tonum.send_keys(str(x)) # 去第x頁
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)] #把頁碼分段
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)目中的 過程
分享標(biāo)題:Python學(xué)習(xí)筆記之抓取某只基金歷史凈值數(shù)據(jù)實(shí)戰(zhàn)案例-創(chuàng)新互聯(lián)
文章URL:http://chinadenli.net/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)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容