吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10438|回复: 14
收起左侧

[Python 原创] 【python】爬取天天基金网数据

[复制链接]
xccxvb 发表于 2018-7-10 17:17
本帖最后由 xccxvb 于 2018-7-10 20:33 编辑

第一次在吾爱发帖,有些不会的请多多包含:lol
在最前面先来展示下爬取到的数据::lol
代码是这样的
额……
我好像没写注释
算了,简略加上注释吧


[Python] 纯文本查看 复制代码
import requests
import json
from time import time
from lxml import etree
import re
from random import sample
from time import sleep

np = 1
base = "http://fund.eastmoney.com/"
acount = 2
# 爬取排行页
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4620.400 QQBrowser/9.7.13014.400'
}
url = "http://fund.eastmoney.com/data/rankhandler.aspx?op=ph&dt=kf&ft=all&rs=&gs=0&sc=zzf&st=desc&sd=2017-07-09&ed=2018-07-09&qdii=&tabSubtype=,,,,,&pi=1&pn=50&dx=1&v=0."
def IndexSpider(url, headers): #爬取第一个页面信息
    url = url+str(int(time())) #这个主要是url最后一个值是v=数字,我就用时间戳来伪装了
    rsp = requests.get(url, headers=headers).content
    html = rsp.decode('utf-8')
    url = url[:-10] #请求完了之后减掉加的时间戳,方面爬取下一页的时候重复操作
    return html
def ChangeUrl(url): #改变url,pi代表的是页数,这样可以按顺序爬取相应页数的数据
    global acount
    url = url.replace("&pi=1", "&pi="+str(acount))
    acount = acount+1
    return url
def ChangeUrl_2(jijindaima): #我要爬取相应基金点开之后的页面的数据,分析可知是对应基金代码前面加上域名,后面加上.html
    global base
    jijindaima = jijindaima.replace('\"', '')
    url_2 = base+jijindaima+'.html'
    return url_2
def DetailRequest(url): #爬取点开那一页之后的数据
    global np
    url = url.replace('\"', '')
    print(url)
    print("正在爬取第{0}条记录".format(np))
    np = np+1
    re_leixing = re.compile('基金类型(.*?)</a>')
    re_jingli = re.compile('基金经理:<a href=(.*?)</a>')
    re_chengliri = re.compile('<td><span class="letterSpace01">成 立 日</span>:(.*?)</td>')
    rsp = requests.get(url, headers=headers).content
    html = rsp.decode('utf-8')
    leixing = re_leixing.findall(html)[0][-3:]
    jingli = re_jingli.findall(html)[0][-2:]
    chengliri = re_chengliri.findall(html)[0]
    return jingli, leixing, chengliri


if __name__ == '__main__':
    nw = 1
    url2_detail = []
    jijindaima_list = []
    detail_url_list = []
    with open('w.txt', 'a', encoding='utf-8') as f:
        f.write("基金代码\t\t基金简称\t\t单位净值\t\t累计净值\t\t基金经理\t\t基金类型\t\t成立日\n")
    for i in range(1, 32):
        html = IndexSpider(url, headers=headers)
        url = ChangeUrl(url)
        right = html.find("]")
        left = html.find("[")
        html = html[left+1:right]
        lists = html.split("\",\"")
        for list in lists:
            l = list.split(",")
            jijindaima_list.append(l[0])
        for i in jijindaima_list:
            detail_url_list.append(ChangeUrl_2(i))
        for i in detail_url_list:
            url2_detail.append(DetailRequest(i))
        with open('w.txt', 'a', encoding='utf-8') as f:
            for list, l2 in zip(lists, url2_detail):
                l = list.split(",")
                f.writelines(l[0]+'\t\t'+l[1]+'\t\t'+l[4]+'\t\t'+l[5]+'\t\t'+l2[0]+'\t\t'+l2[1]+'\t\t'+l2[2]+'\n')
                print('正在写入第{0}条记录……'.format(nw))
                nw = nw+1
        print("5秒后爬取下一页……")
        sleep(5)

哈哈,代码可能不会一直有效哦,欢迎大家学习,不懂的就在帖子下面问,我看到会回复的哦

爬取到的数据

爬取到的数据

免费评分

参与人数 3吾爱币 +4 热心值 +3 收起 理由
ISO14229 + 1 + 1 谢谢@Thanks!
无辰 + 1 + 1 热心回复!
byxiaoxie + 2 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

mengsiyiren 发表于 2018-7-10 17:22
可以啊群主,多谢分享
 楼主| xccxvb 发表于 2020-6-17 22:57
hqhlwz 发表于 2020-5-28 04:26
请问 如果爬取 指定一只基金所有的历史数据  to csv  该如何修改代码呢

大哥,这是我两年前的贴子,现在这个代码肯定是用不了了的,因为网页源码过了两年肯定改变了,现在只能当思路看看了
我才不是狮子喵 发表于 2018-7-10 17:27
byxiaoxie 发表于 2018-7-10 17:29
感谢分享,我最近也在学Python我拿去学习了,谢谢!
wushaominkk 发表于 2018-7-10 18:01
标题格式不规范,已帮你修改,下次注意,请按要求插入代码
【公告】发帖代码插入教程
https://www.52pojie.cn/thread-713042-1-1.html

hualong1009 发表于 2018-7-10 18:08
看着很简单啊
hl908707 发表于 2018-7-10 18:14
老铁是做基金数据的啊
 楼主| xccxvb 发表于 2018-7-10 20:29
wushaominkk 发表于 2018-7-10 18:01
标题格式不规范,已帮你修改,下次注意,请按要求插入代码
【公告】发帖代码插入教程
https://www.52pojie.c ...

好滴,谢谢
 楼主| xccxvb 发表于 2018-7-10 20:30
hl908707 发表于 2018-7-10 18:14
老铁是做基金数据的啊

不是的,我还是学生呢
wjsxkk 发表于 2018-7-10 23:51
学习了,正准备学爬虫,谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-30 11:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表